Changeset 25720 in vbox for trunk/src/VBox/Runtime/r0drv/solaris
- 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/solaris/semeventmulti-r0drv-solaris.c
r25183 r25720 70 70 71 71 72 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI pEventMultiSem) 73 { 74 Assert(sizeof(RTSEMEVENTMULTIINTERNAL) > sizeof(void *)); 75 AssertPtrReturn(pEventMultiSem, VERR_INVALID_POINTER); 72 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem) 73 { 74 return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); 75 } 76 77 78 RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, 79 const char *pszNameFmt, ...) 80 { 81 AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); 82 AssertPtrReturn(phEventMultiSem, VERR_INVALID_POINTER); 76 83 RT_ASSERT_PREEMPTIBLE(); 77 84 85 AssertCompile(sizeof(RTSEMEVENTMULTIINTERNAL) > sizeof(void *)); 78 86 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)RTMemAlloc(sizeof(*pThis)); 79 87 if (pThis) … … 85 93 mutex_init(&pThis->Mtx, "IPRT Multiple Release Event Semaphore", MUTEX_DRIVER, (void *)ipltospl(DISP_LEVEL)); 86 94 cv_init(&pThis->Cnd, "IPRT CV", CV_DRIVER, NULL); 87 *pEventMultiSem = pThis; 95 96 *phEventMultiSem = pThis; 88 97 return VINF_SUCCESS; 89 98 } … … 92 101 93 102 94 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI EventMultiSem)95 { 96 if (EventMultiSem == NIL_RTSEMEVENTMULTI) /* don't bitch */97 return VERR_INVALID_HANDLE;98 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)EventMultiSem;103 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem) 104 { 105 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 106 if (pThis == NIL_RTSEMEVENTMULTI) 107 return VINF_SUCCESS; 99 108 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 100 AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, 101 ("pThis=%p u32Magic=%#x\n", pThis, pThis->u32Magic), 102 VERR_INVALID_HANDLE); 109 AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("pThis=%p u32Magic=%#x\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE); 103 110 RT_ASSERT_INTS_ON(); 104 111 … … 127 134 128 135 129 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI EventMultiSem)130 { 131 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL) EventMultiSem;136 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem) 137 { 138 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 132 139 RT_ASSERT_PREEMPT_CPUID_VAR(); 133 140 … … 172 179 173 180 174 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI EventMultiSem)175 { 176 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL) EventMultiSem;181 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem) 182 { 183 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 177 184 RT_ASSERT_PREEMPT_CPUID_VAR(); 178 185 … … 210 217 211 218 212 static int rtSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies, bool fInterruptible)219 static int rtSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies, bool fInterruptible) 213 220 { 214 221 int rc; 215 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL) EventMultiSem;222 PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; 216 223 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 217 224 AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, … … 294 301 295 302 296 RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)297 { 298 return rtSemEventMultiWait( EventMultiSem, cMillies, false /* not interruptible */);299 } 300 301 302 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)303 { 304 return rtSemEventMultiWait( EventMultiSem, cMillies, true /* interruptible */);305 } 306 303 RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 304 { 305 return rtSemEventMultiWait(hEventMultiSem, cMillies, false /* not interruptible */); 306 } 307 308 309 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 310 { 311 return rtSemEventMultiWait(hEventMultiSem, cMillies, true /* interruptible */); 312 } 313
Note:
See TracChangeset
for help on using the changeset viewer.