Changeset 25720 in vbox for trunk/src/VBox/Runtime/r0drv/linux
- Timestamp:
- Jan 11, 2010 1:57:09 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56460
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/linux/semeventmulti-r0drv-linux.c
r24956 r25720 62 62 63 63 64 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI pEventMultiSem) 65 { 64 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem) 65 { 66 return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); 67 } 68 69 70 RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, 71 const char *pszNameFmt, ...) 72 { 73 AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); 74 66 75 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)RTMemAlloc(sizeof(*pThis)); 67 76 if (pThis) … … 70 79 pThis->fState = 0; 71 80 init_waitqueue_head(&pThis->Head); 72 *pEventMultiSem = pThis; 81 82 *phEventMultiSem = pThis; 73 83 return VINF_SUCCESS; 74 84 } … … 78 88 79 89 80 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI EventMultiSem)90 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem) 81 91 { 82 92 /* 83 93 * Validate input. 84 94 */ 85 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL) EventMultiSem;86 if ( !pThis)87 return V ERR_INVALID_PARAMETER;95 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 96 if (pThis == NIL_RTSEMEVENTMULTI) 97 return VINF_SUCCESS; 88 98 AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); 89 99 AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); … … 92 102 * Invalidate it and signal the object just in case. 93 103 */ 94 ASMAtomic IncU32(&pThis->u32Magic);104 ASMAtomicWriteU32(&pThis->u32Magic, ~RTSEMEVENTMULTI_MAGIC); 95 105 ASMAtomicXchgU32(&pThis->fState, 0); 96 106 Assert(!waitqueue_active(&pThis->Head)); … … 102 112 103 113 104 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI EventMultiSem)114 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem) 105 115 { 106 116 /* 107 117 * Validate input. 108 118 */ 109 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL) EventMultiSem;119 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 110 120 if (!pThis) 111 121 return VERR_INVALID_PARAMETER; … … 123 133 124 134 125 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI EventMultiSem)135 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem) 126 136 { 127 137 /* 128 138 * Validate input. 129 139 */ 130 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL) EventMultiSem;140 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 131 141 if (!pThis) 132 142 return VERR_INVALID_PARAMETER; … … 206 216 207 217 208 RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)209 { 210 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL) EventMultiSem;218 RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 219 { 220 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 211 221 if (!pThis) 212 222 return VERR_INVALID_PARAMETER; … … 221 231 222 232 223 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)224 { 225 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL) EventMultiSem;233 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 234 { 235 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 226 236 if (!pThis) 227 237 return VERR_INVALID_PARAMETER;
Note:
See TracChangeset
for help on using the changeset viewer.