Changeset 25720 in vbox for trunk/src/VBox/Runtime/r3
- Timestamp:
- Jan 11, 2010 1:57:09 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56460
- Location:
- trunk/src/VBox/Runtime/r3
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r3/linux/semeventmulti-linux.cpp
r25704 r25720 31 31 32 32 #include <features.h> 33 #if __GLIBC_PREREQ(2,6) && !defined(IPRT_WITH_FUTEX_BASED_SEMS) && !defined(DEBUG_bird)33 #if __GLIBC_PREREQ(2,6) && !defined(IPRT_WITH_FUTEX_BASED_SEMS) 34 34 35 35 /* … … 119 119 120 120 121 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI pEventMultiSem) 122 { 121 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem) 122 { 123 return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); 124 } 125 126 127 RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, 128 const char *pszNameFmt, ...) 129 { 130 AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); 131 123 132 /* 124 133 * Allocate semaphore handle. … … 130 139 pThis->iState = 0; 131 140 #ifdef RTSEMEVENTMULTI_STRICT 132 RTLockValidatorRecSharedInit(&pThis->Signallers, 133 NIL_RTLOCKVALCLASS, RTLOCKVAL_SUB_CLASS_ANY, 134 pThis, true /*fSignaller*/, true /*fEnabled*/, "RTSemEvent"); 141 va_list va; 142 va_start(va, pszNameFmt); 143 RTLockValidatorRecSharedInitV(&pThis->Signallers, hClass, RTLOCKVAL_SUB_CLASS_ANY, pThis, 144 true /*fSignaller*/, !(fFlags & RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), 145 pszNameFmt, va); 146 va_end(va); 135 147 pThis->fEverHadSignallers = false; 136 148 #endif 137 *pEventMultiSem = pThis; 149 150 *phEventMultiSem = pThis; 138 151 return VINF_SUCCESS; 139 152 } … … 142 155 143 156 144 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI EventMultiSem)157 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem) 145 158 { 146 159 /* 147 160 * Validate input. 148 161 */ 149 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem; 150 AssertReturn(VALID_PTR(pThis) && pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, 151 VERR_INVALID_HANDLE); 162 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 163 if (pThis == NIL_RTSEMEVENTMULTI) 164 return VINF_SUCCESS; 165 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 166 AssertReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, VERR_INVALID_HANDLE); 152 167 153 168 /* … … 172 187 173 188 174 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI EventMultiSem)189 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem) 175 190 { 176 191 /* 177 192 * Validate input. 178 193 */ 179 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;194 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 180 195 AssertReturn(VALID_PTR(pThis) && pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, 181 196 VERR_INVALID_HANDLE); … … 206 221 207 222 208 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI EventMultiSem)223 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem) 209 224 { 210 225 /* 211 226 * Validate input. 212 227 */ 213 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;228 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 214 229 AssertReturn(VALID_PTR(pThis) && pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, 215 230 VERR_INVALID_HANDLE); … … 227 242 228 243 229 static int rtSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies, bool fAutoResume)244 static int rtSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies, bool fAutoResume) 230 245 { 231 246 PCRTLOCKVALSRCPOS pSrcPos = NULL; … … 234 249 * Validate input. 235 250 */ 236 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;251 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 237 252 AssertReturn(VALID_PTR(pThis) && pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, 238 253 VERR_INVALID_HANDLE); … … 339 354 340 355 341 RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)342 { 343 int rc = rtSemEventMultiWait( EventMultiSem, cMillies, true);356 RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 357 { 358 int rc = rtSemEventMultiWait(hEventMultiSem, cMillies, true); 344 359 Assert(rc != VERR_INTERRUPTED); 345 360 return rc; … … 347 362 348 363 349 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)350 { 351 return rtSemEventMultiWait( EventMultiSem, cMillies, false);364 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 365 { 366 return rtSemEventMultiWait(hEventMultiSem, cMillies, false); 352 367 } 353 368 -
trunk/src/VBox/Runtime/r3/os2/sems-os2.cpp
r25717 r25720 148 148 149 149 150 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI pEventMultiSem) 151 { 150 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem) 151 { 152 return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); 153 } 154 155 156 RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, 157 const char *pszNameFmt, ...) 158 { 159 AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); 160 152 161 /* 153 162 * Create the semaphore. … … 158 167 if (!rc) 159 168 { 160 *pEventMultiSem = (RTSEMEVENTMULTI)(void *)hev; 161 return VINF_SUCCESS; 162 } 163 return RTErrConvertFromOS2(rc); 164 } 165 166 167 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI EventMultiSem) 168 { 169 *phEventMultiSem = (RTSEMEVENTMULTI)(void *)hev; 170 return VINF_SUCCESS; 171 } 172 return RTErrConvertFromOS2(rc); 173 } 174 175 176 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem) 177 { 178 if (hEventMultiSem == NIL_RTSEMEVENTMULTI) 179 return VINF_SUCCESS; 180 169 181 /* 170 182 * Close semaphore handle. 171 183 */ 172 int rc = DosCloseEventSem(SEM2HND( EventMultiSem));173 if (!rc) 174 return VINF_SUCCESS; 175 AssertMsgFailed(("Destroy EventMultiSem %p failed, rc=%d\n",EventMultiSem, rc));176 return RTErrConvertFromOS2(rc); 177 } 178 179 180 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI EventMultiSem)184 int rc = DosCloseEventSem(SEM2HND(hEventMultiSem)); 185 if (!rc) 186 return VINF_SUCCESS; 187 AssertMsgFailed(("Destroy hEventMultiSem %p failed, rc=%d\n", hEventMultiSem, rc)); 188 return RTErrConvertFromOS2(rc); 189 } 190 191 192 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem) 181 193 { 182 194 /* 183 195 * Signal the object. 184 196 */ 185 int rc = DosPostEventSem(SEM2HND( EventMultiSem));197 int rc = DosPostEventSem(SEM2HND(hEventMultiSem)); 186 198 switch (rc) 187 199 { … … 196 208 197 209 198 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI EventMultiSem)210 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem) 199 211 { 200 212 /* … … 202 214 */ 203 215 ULONG ulIgnore; 204 int rc = DosResetEventSem(SEM2HND( EventMultiSem), &ulIgnore);216 int rc = DosResetEventSem(SEM2HND(hEventMultiSem), &ulIgnore); 205 217 switch (rc) 206 218 { … … 214 226 215 227 216 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)228 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 217 229 { 218 230 /* 219 231 * Wait for condition. 220 232 */ 221 int rc = DosWaitEventSem(SEM2HND( EventMultiSem), cMillies == RT_INDEFINITE_WAIT ? SEM_INDEFINITE_WAIT : cMillies);233 int rc = DosWaitEventSem(SEM2HND(hEventMultiSem), cMillies == RT_INDEFINITE_WAIT ? SEM_INDEFINITE_WAIT : cMillies); 222 234 switch (rc) 223 235 { … … 228 240 default: 229 241 { 230 AssertMsgFailed(("Wait on EventMultiSem %p failed, rc=%d\n",EventMultiSem, rc));242 AssertMsgFailed(("Wait on hEventMultiSem %p failed, rc=%d\n", hEventMultiSem, rc)); 231 243 return RTErrConvertFromOS2(rc); 232 244 } -
trunk/src/VBox/Runtime/r3/posix/semeventmulti-posix.cpp
r25704 r25720 86 86 87 87 88 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI pEventMultiSem) 89 { 88 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem) 89 { 90 return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); 91 } 92 93 94 RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, 95 const char *pszNameFmt, ...) 96 { 97 AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); 98 99 /* 100 * Allocate semaphore handle. 101 */ 90 102 int rc; 91 92 /*93 * Allocate semaphore handle.94 */95 103 struct RTSEMEVENTMULTIINTERNAL *pThis = (struct RTSEMEVENTMULTIINTERNAL *)RTMemAlloc(sizeof(struct RTSEMEVENTMULTIINTERNAL)); 96 104 if (pThis) … … 122 130 ASMAtomicXchgU32(&pThis->cWaiters, 0); 123 131 #ifdef RTSEMEVENTMULTI_STRICT 124 RTLockValidatorRecSharedInit(&pThis->Signallers, 125 NIL_RTLOCKVALCLASS, RTLOCKVAL_SUB_CLASS_ANY, 126 pThis, true /*fSignaller*/, true /*fEnabled*/, "RTSemEvent"); 132 va_list va; 133 va_start(va, pszNameFmt); 134 RTLockValidatorRecSharedInitV(&pThis->Signallers, hClass, RTLOCKVAL_SUB_CLASS_ANY, pThis, 135 true /*fSignaller*/, !(fFlags & RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), 136 pszNameFmt, va); 137 va_end(va); 127 138 pThis->fEverHadSignallers = false; 128 139 #endif 129 140 130 *p EventMultiSem = pThis;141 *phEventMultiSem = pThis; 131 142 return VINF_SUCCESS; 132 143 } … … 150 161 151 162 152 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI EventMultiSem)163 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem) 153 164 { 154 165 /* 155 166 * Validate handle. 156 167 */ 157 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;168 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 158 169 if (pThis == NIL_RTSEMEVENTMULTI) 159 170 return VINF_SUCCESS; … … 177 188 if (rc) 178 189 { 179 AssertMsgFailed(("Failed to destroy event sem %p, rc=%d.\n", EventMultiSem, rc));190 AssertMsgFailed(("Failed to destroy event sem %p, rc=%d.\n", hEventMultiSem, rc)); 180 191 return RTErrConvertFromErrno(rc); 181 192 } … … 194 205 if (rc) 195 206 { 196 AssertMsgFailed(("Failed to destroy event sem %p, rc=%d. (mutex)\n", EventMultiSem, rc));207 AssertMsgFailed(("Failed to destroy event sem %p, rc=%d. (mutex)\n", hEventMultiSem, rc)); 197 208 return RTErrConvertFromErrno(rc); 198 209 } … … 209 220 210 221 211 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI EventMultiSem)222 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem) 212 223 { 213 224 /* 214 225 * Validate input. 215 226 */ 216 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;227 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 217 228 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 218 229 uint32_t u32 = pThis->u32State; … … 234 245 if (rc) 235 246 { 236 AssertMsgFailed(("Failed to lock event sem %p, rc=%d.\n", EventMultiSem, rc));247 AssertMsgFailed(("Failed to lock event sem %p, rc=%d.\n", hEventMultiSem, rc)); 237 248 return RTErrConvertFromErrno(rc); 238 249 } … … 245 256 ASMAtomicXchgU32(&pThis->u32State, EVENTMULTI_STATE_SIGNALED); 246 257 rc = pthread_cond_broadcast(&pThis->Cond); 247 AssertMsg(!rc, ("Failed to signal event sem %p, rc=%d.\n", EventMultiSem, rc));258 AssertMsg(!rc, ("Failed to signal event sem %p, rc=%d.\n", hEventMultiSem, rc)); 248 259 } 249 260 else if (pThis->u32State == EVENTMULTI_STATE_SIGNALED) 250 261 { 251 262 rc = pthread_cond_broadcast(&pThis->Cond); /* give'm another kick... */ 252 AssertMsg(!rc, ("Failed to signal event sem %p, rc=%d. (2)\n", EventMultiSem, rc));263 AssertMsg(!rc, ("Failed to signal event sem %p, rc=%d. (2)\n", hEventMultiSem, rc)); 253 264 } 254 265 else … … 259 270 */ 260 271 int rc2 = pthread_mutex_unlock(&pThis->Mutex); 261 AssertMsg(!rc2, ("Failed to unlock event sem %p, rc=%d.\n", EventMultiSem, rc));272 AssertMsg(!rc2, ("Failed to unlock event sem %p, rc=%d.\n", hEventMultiSem, rc)); 262 273 if (rc) 263 274 return RTErrConvertFromErrno(rc); … … 269 280 270 281 271 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI EventMultiSem)282 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem) 272 283 { 273 284 /* 274 285 * Validate input. 275 286 */ 276 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;287 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 277 288 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 278 289 uint32_t u32 = pThis->u32State; … … 285 296 if (rc) 286 297 { 287 AssertMsgFailed(("Failed to lock event multi sem %p, rc=%d.\n", EventMultiSem, rc));298 AssertMsgFailed(("Failed to lock event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); 288 299 return RTErrConvertFromErrno(rc); 289 300 } … … 303 314 if (rc) 304 315 { 305 AssertMsgFailed(("Failed to unlock event multi sem %p, rc=%d.\n", EventMultiSem, rc));316 AssertMsgFailed(("Failed to unlock event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); 306 317 return RTErrConvertFromErrno(rc); 307 318 } … … 312 323 313 324 314 static int rtSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies, bool fAutoResume)325 static int rtSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies, bool fAutoResume) 315 326 { 316 327 PCRTLOCKVALSRCPOS pSrcPos = NULL; … … 319 330 * Validate input. 320 331 */ 321 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;332 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 322 333 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 323 334 uint32_t u32 = pThis->u32State; … … 333 344 if (rc) 334 345 { 335 AssertMsgFailed(("Failed to lock event multi sem %p, rc=%d.\n", EventMultiSem, rc));346 AssertMsgFailed(("Failed to lock event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); 336 347 return RTErrConvertFromErrno(rc); 337 348 } … … 345 356 ASMAtomicDecU32(&pThis->cWaiters); 346 357 rc = pthread_mutex_unlock(&pThis->Mutex); 347 AssertMsg(!rc, ("Failed to unlock event multi sem %p, rc=%d.\n", EventMultiSem, rc)); NOREF(rc);358 AssertMsg(!rc, ("Failed to unlock event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); NOREF(rc); 348 359 return VINF_SUCCESS; 349 360 } … … 351 362 { 352 363 rc = pthread_mutex_unlock(&pThis->Mutex); 353 AssertMsg(!rc, ("Failed to unlock event multi sem %p, rc=%d.\n", EventMultiSem, rc)); NOREF(rc);364 AssertMsg(!rc, ("Failed to unlock event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); NOREF(rc); 354 365 return VERR_SEM_DESTROYED; 355 366 } … … 377 388 if (rc) 378 389 { 379 AssertMsgFailed(("Failed to wait on event multi sem %p, rc=%d.\n", EventMultiSem, rc));390 AssertMsgFailed(("Failed to wait on event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); 380 391 ASMAtomicDecU32(&pThis->cWaiters); 381 392 int rc2 = pthread_mutex_unlock(&pThis->Mutex); 382 AssertMsg(!rc2, ("Failed to unlock event multi sem %p, rc=%d.\n", EventMultiSem, rc2)); NOREF(rc2);393 AssertMsg(!rc2, ("Failed to unlock event multi sem %p, rc=%d.\n", hEventMultiSem, rc2)); NOREF(rc2); 383 394 return RTErrConvertFromErrno(rc); 384 395 } … … 421 432 if (rc) 422 433 { 423 AssertMsg(rc == ETIMEDOUT, ("Failed to lock event multi sem %p, rc=%d.\n", EventMultiSem, rc));434 AssertMsg(rc == ETIMEDOUT, ("Failed to lock event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); 424 435 return RTErrConvertFromErrno(rc); 425 436 } … … 433 444 ASMAtomicDecU32(&pThis->cWaiters); 434 445 rc = pthread_mutex_unlock(&pThis->Mutex); 435 AssertMsg(!rc, ("Failed to unlock event multi sem %p, rc=%d.\n", EventMultiSem, rc)); NOREF(rc);446 AssertMsg(!rc, ("Failed to unlock event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); NOREF(rc); 436 447 return VINF_SUCCESS; 437 448 } … … 439 450 { 440 451 rc = pthread_mutex_unlock(&pThis->Mutex); 441 AssertMsg(!rc, ("Failed to unlock event multi sem %p, rc=%d.\n", EventMultiSem, rc)); NOREF(rc);452 AssertMsg(!rc, ("Failed to unlock event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); NOREF(rc); 442 453 return VERR_SEM_DESTROYED; 443 454 } … … 473 484 if (rc && (rc != EINTR || !fAutoResume)) /* according to SuS this function shall not return EINTR, but linux man page says differently. */ 474 485 { 475 AssertMsg(rc == ETIMEDOUT, ("Failed to wait on event multi sem %p, rc=%d.\n", EventMultiSem, rc));486 AssertMsg(rc == ETIMEDOUT, ("Failed to wait on event multi sem %p, rc=%d.\n", hEventMultiSem, rc)); 476 487 ASMAtomicDecU32(&pThis->cWaiters); 477 488 int rc2 = pthread_mutex_unlock(&pThis->Mutex); 478 AssertMsg(!rc2, ("Failed to unlock event multi sem %p, rc=%d.\n", EventMultiSem, rc2)); NOREF(rc2);489 AssertMsg(!rc2, ("Failed to unlock event multi sem %p, rc=%d.\n", hEventMultiSem, rc2)); NOREF(rc2); 479 490 return RTErrConvertFromErrno(rc); 480 491 } … … 484 495 485 496 486 RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)487 { 488 int rc = rtSemEventMultiWait( EventMultiSem, cMillies, true);497 RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 498 { 499 int rc = rtSemEventMultiWait(hEventMultiSem, cMillies, true); 489 500 Assert(rc != VERR_INTERRUPTED); 490 501 return rc; … … 492 503 493 504 494 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)495 { 496 return rtSemEventMultiWait( EventMultiSem, cMillies, false);505 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 506 { 507 return rtSemEventMultiWait(hEventMultiSem, cMillies, false); 497 508 } 498 509 -
trunk/src/VBox/Runtime/r3/win/semeventmulti-win.cpp
r25704 r25720 70 70 71 71 72 /* Undefine debug mappings. */ 73 #undef RTSemEventMultiWait 74 #undef RTSemEventMultiWaitNoResume 75 76 77 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI pEventMultiSem) 78 { 72 73 RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem) 74 { 75 return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); 76 } 77 78 79 RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, 80 const char *pszNameFmt, ...) 81 { 82 AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); 83 79 84 struct RTSEMEVENTMULTIINTERNAL *pThis = (struct RTSEMEVENTMULTIINTERNAL *)RTMemAlloc(sizeof(*pThis)); 80 85 if (!pThis) … … 90 95 pThis->u32Magic = RTSEMEVENTMULTI_MAGIC; 91 96 #ifdef RTSEMEVENT_STRICT 92 RTLockValidatorRecSharedInit(&pThis->Signallers, 93 NIL_RTLOCKVALCLASS, RTLOCKVAL_SUB_CLASS_ANY, 94 pThis, true /*fSignaller*/, true /*fEnabled*/, "RTSemEvent"); 97 va_list va; 98 va_start(va, pszNameFmt); 99 RTLockValidatorRecSharedInitV(&pThis->Signallers, hClass, RTLOCKVAL_SUB_CLASS_ANY, pThis, 100 true /*fSignaller*/, !(fFlags & RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), 101 pszNameFmt, va); 102 va_end(va); 95 103 pThis->fEverHadSignallers = false; 96 104 #endif 97 105 98 *p EventMultiSem = pThis;106 *phEventMultiSem = pThis; 99 107 return VINF_SUCCESS; 100 108 } … … 106 114 107 115 108 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI EventMultiSem)109 { 110 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;116 RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem) 117 { 118 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 111 119 if (pThis == NIL_RTSEMEVENT) /* don't bitch */ 112 return V ERR_INVALID_HANDLE;120 return VINF_SUCCESS; 113 121 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 114 122 AssertReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, VERR_INVALID_HANDLE); … … 130 138 DWORD dwErr = GetLastError(); 131 139 rc = RTErrConvertFromWin32(dwErr); 132 AssertMsgFailed(("Destroy EventMultiSem %p failed, lasterr=%u (%Rrc)\n", pThis, dwErr, rc));140 AssertMsgFailed(("Destroy hEventMultiSem %p failed, lasterr=%u (%Rrc)\n", pThis, dwErr, rc)); 133 141 /* Leak it. */ 134 142 } … … 138 146 139 147 140 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI EventMultiSem)148 RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem) 141 149 { 142 150 /* 143 151 * Validate input. 144 152 */ 145 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;153 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 146 154 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 147 155 AssertReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, VERR_INVALID_HANDLE); … … 162 170 return VINF_SUCCESS; 163 171 DWORD dwErr = GetLastError(); 164 AssertMsgFailed(("Signaling EventMultiSem %p failed, lasterr=%d\n", pThis, dwErr));172 AssertMsgFailed(("Signaling hEventMultiSem %p failed, lasterr=%d\n", pThis, dwErr)); 165 173 return RTErrConvertFromWin32(dwErr); 166 174 } 167 175 168 176 169 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI EventMultiSem)177 RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem) 170 178 { 171 179 /* 172 180 * Validate input. 173 181 */ 174 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;182 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 175 183 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 176 184 AssertReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, VERR_INVALID_HANDLE); … … 182 190 return VINF_SUCCESS; 183 191 DWORD dwErr = GetLastError(); 184 AssertMsgFailed(("Resetting EventMultiSem %p failed, lasterr=%d\n", pThis, dwErr));192 AssertMsgFailed(("Resetting hEventMultiSem %p failed, lasterr=%d\n", pThis, dwErr)); 185 193 return RTErrConvertFromWin32(dwErr); 186 194 } … … 201 209 { 202 210 int rc2 = RTErrConvertFromWin32(GetLastError()); 203 AssertMsgFailed(("Wait on EventMultiSem %p failed, rc=%d lasterr=%d\n", pThis, rc, GetLastError()));211 AssertMsgFailed(("Wait on hEventMultiSem %p failed, rc=%d lasterr=%d\n", pThis, rc, GetLastError())); 204 212 if (rc2) 205 213 return rc2; … … 212 220 213 221 214 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies) 222 #undef RTSemEventMultiWaitNoResume 223 RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies) 215 224 { 216 225 PCRTLOCKVALSRCPOS pSrcPos = NULL; … … 219 228 * Validate input. 220 229 */ 221 struct RTSEMEVENTMULTIINTERNAL *pThis = EventMultiSem;230 struct RTSEMEVENTMULTIINTERNAL *pThis = hEventMultiSem; 222 231 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 223 232 AssertReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, VERR_INVALID_HANDLE);
Note:
See TracChangeset
for help on using the changeset viewer.