Changeset 51940 in vbox for trunk/src/VBox/Runtime
- Timestamp:
- Jul 8, 2014 5:45:51 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 94833
- Location:
- trunk/src/VBox/Runtime
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/Makefile.kmk
r51868 r51940 1755 1755 common/time/timesup.cpp \ 1756 1756 generic/RTAssertShouldPanic-generic.cpp \ 1757 generic/critsect-generic.cpp \ 1757 1758 \ 1758 1759 $(RuntimeNoCrt_SOURCES) … … 1935 1936 generic/RTSemEventMultiWait-2-ex-generic.cpp \ 1936 1937 generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \ 1938 generic/critsect-generic.cpp \ 1937 1939 generic/errvars-generic.cpp \ 1938 1940 generic/uuid-generic.cpp \ -
trunk/src/VBox/Runtime/generic/critsect-generic.cpp
r48935 r51940 59 59 */ 60 60 pCritSect->u32Magic = RTCRITSECT_MAGIC; 61 pCritSect->fFlags = fFlags; 61 #ifdef IN_RING0 62 pCritSect->fFlags = fFlags | RTCRITSECT_FLAGS_RING0; 63 #else 64 pCritSect->fFlags = fFlags & ~RTCRITSECT_FLAGS_RING0; 65 #endif 62 66 pCritSect->cNestings = 0; 63 67 pCritSect->cLockers = -1; … … 87 91 if (RT_SUCCESS(rc)) 88 92 { 93 #ifdef IN_RING0 94 rc = RTSemEventCreate(&pCritSect->EventSem); 95 96 #else 89 97 rc = RTSemEventCreateEx(&pCritSect->EventSem, 90 98 fFlags & RTCRITSECT_FLAGS_BOOTSTRAP_HACK … … 93 101 NIL_RTLOCKVALCLASS, 94 102 NULL); 103 #endif 95 104 if (RT_SUCCESS(rc)) 96 105 return VINF_SUCCESS; 106 #ifdef RTCRITSECT_STRICT 97 107 RTLockValidatorRecExclDestroy(&pCritSect->pValidatorRec); 108 #endif 98 109 } 99 110 … … 108 119 RTDECL(uint32_t) RTCritSectSetSubClass(PRTCRITSECT pCritSect, uint32_t uSubClass) 109 120 { 110 # ifdef RTCRITSECT_STRICT121 # ifdef RTCRITSECT_STRICT 111 122 AssertPtrReturn(pCritSect, RTLOCKVAL_SUB_CLASS_INVALID); 112 123 AssertReturn(pCritSect->u32Magic == RTCRITSECT_MAGIC, RTLOCKVAL_SUB_CLASS_INVALID); 113 124 AssertReturn(!(pCritSect->fFlags & RTCRITSECT_FLAGS_NOP), RTLOCKVAL_SUB_CLASS_INVALID); 114 125 return RTLockValidatorRecExclSetSubClass(pCritSect->pValidatorRec, uSubClass); 115 # else126 # else 116 127 return RTLOCKVAL_SUB_CLASS_INVALID; 117 # endif128 # endif 118 129 } 119 130 … … 124 135 Assert(pCritSect->u32Magic == RTCRITSECT_MAGIC); 125 136 /*AssertReturn(pCritSect->u32Magic == RTCRITSECT_MAGIC, VERR_SEM_DESTROYED);*/ 137 #ifdef IN_RING0 138 Assert(pCritSect->fFlags & RTCRITSECT_FLAGS_RING0); 139 #else 140 Assert(!(pCritSect->fFlags & RTCRITSECT_FLAGS_RING0)); 141 #endif 126 142 127 143 /* … … 196 212 AssertPtr(pCritSect); 197 213 AssertReturn(pCritSect->u32Magic == RTCRITSECT_MAGIC, VERR_SEM_DESTROYED); 214 #ifdef IN_RING0 215 Assert(pCritSect->fFlags & RTCRITSECT_FLAGS_RING0); 216 #else 217 Assert(!(pCritSect->fFlags & RTCRITSECT_FLAGS_RING0)); 218 #endif 198 219 199 220 /* … … 267 288 return rc9; 268 289 } 269 #el se290 #elif defined(IN_RING3) 270 291 RTThreadBlocking(hThreadSelf, RTTHREADSTATE_CRITSECT, false); 271 292 #endif 272 293 int rc = RTSemEventWait(pCritSect->EventSem, RT_INDEFINITE_WAIT); 294 #ifdef IN_RING3 273 295 RTThreadUnblocked(hThreadSelf, RTTHREADSTATE_CRITSECT); 296 #endif 274 297 275 298 if (pCritSect->u32Magic != RTCRITSECT_MAGIC) … … 322 345 Assert(pCritSect); 323 346 Assert(pCritSect->u32Magic == RTCRITSECT_MAGIC); 347 #ifdef IN_RING0 348 Assert(pCritSect->fFlags & RTCRITSECT_FLAGS_RING0); 349 #else 350 Assert(!(pCritSect->fFlags & RTCRITSECT_FLAGS_RING0)); 351 #endif 324 352 if (pCritSect->fFlags & RTCRITSECT_FLAGS_NOP) 325 353 return VINF_SUCCESS; … … 363 391 364 392 365 393 #ifdef IN_RING3 366 394 367 395 static int rtCritSectEnterMultiple(size_t cCritSects, PRTCRITSECT *papCritSects, PCRTLOCKVALSRCPOS pSrcPos) … … 477 505 RT_EXPORT_SYMBOL(RTCritSectLeaveMultiple); 478 506 507 #endif /* IN_RING3 */ 508 509 479 510 480 511 RTDECL(int) RTCritSectDelete(PRTCRITSECT pCritSect) … … 488 519 Assert(pCritSect->cLockers == -1); 489 520 Assert(pCritSect->NativeThreadOwner == NIL_RTNATIVETHREAD); 521 #ifdef IN_RING0 522 Assert(pCritSect->fFlags & RTCRITSECT_FLAGS_RING0); 523 #else 524 Assert(!(pCritSect->fFlags & RTCRITSECT_FLAGS_RING0)); 525 #endif 490 526 491 527 /* … … 506 542 AssertRC(rc); 507 543 544 #ifdef RTCRITSECT_STRICT 508 545 RTLockValidatorRecExclDestroy(&pCritSect->pValidatorRec); 546 #endif 509 547 510 548 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.