Changeset 25648 in vbox for trunk/src/VBox/Runtime/common
- Timestamp:
- Jan 5, 2010 2:32:58 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56363
- Location:
- trunk/src/VBox/Runtime/common/misc
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/misc/lockvalidator.cpp
r25645 r25648 1233 1233 rtLockValidatorCopySrcPos(&pThreadSelf->LockValidator.SrcPos, pSrcPos); 1234 1234 ASMAtomicWriteBool(&pThreadSelf->LockValidator.fInValidator, true); 1235 pThreadSelf->LockValidator.enmRecState = enmSleepState; 1235 1236 rtThreadSetState(pThreadSelf, enmSleepState); 1236 1237 … … 1260 1261 ASMAtomicWriteBool(&pThreadSelf->fReallySleeping, fReallySleeping); 1261 1262 else 1263 { 1262 1264 rtThreadSetState(pThreadSelf, enmThreadState); 1265 rtLockValidatorWriteRecUnionPtr(&pThreadSelf->LockValidator.pRec, NULL); 1266 } 1263 1267 ASMAtomicWriteBool(&pThreadSelf->LockValidator.fInValidator, false); 1264 1268 return rc; … … 1434 1438 rtLockValidatorCopySrcPos(&pThreadSelf->LockValidator.SrcPos, pSrcPos); 1435 1439 ASMAtomicWriteBool(&pThreadSelf->LockValidator.fInValidator, true); 1440 pThreadSelf->LockValidator.enmRecState = enmSleepState; 1436 1441 rtThreadSetState(pThreadSelf, enmSleepState); 1437 1442 … … 1461 1466 ASMAtomicWriteBool(&pThreadSelf->fReallySleeping, fReallySleeping); 1462 1467 else 1468 { 1463 1469 rtThreadSetState(pThreadSelf, enmThreadState); 1470 rtLockValidatorWriteRecUnionPtr(&pThreadSelf->LockValidator.pRec, NULL); 1471 } 1464 1472 ASMAtomicWriteBool(&pThreadSelf->LockValidator.fInValidator, false); 1465 1473 return rc; -
trunk/src/VBox/Runtime/common/misc/thread.cpp
r25645 r25648 1334 1334 Assert(pThread == RTThreadSelf()); 1335 1335 ASMAtomicWriteBool(&pThread->fReallySleeping, false); 1336 if (rtThreadGetState(pThread) == enmCurState) 1336 1337 RTTHREADSTATE enmActualState = rtThreadGetState(pThread); 1338 if (enmActualState == enmCurState) 1339 { 1337 1340 rtThreadSetState(pThread, RTTHREADSTATE_RUNNING); 1341 if ( pThread->LockValidator.pRec 1342 && pThread->LockValidator.enmRecState == enmCurState) 1343 ASMAtomicWritePtr((void * volatile *)&pThread->LockValidator.pRec, NULL); 1344 } 1345 /* This is a bit ugly... :-/ */ 1346 else if ( ( enmActualState == RTTHREADSTATE_TERMINATED 1347 || enmActualState == RTTHREADSTATE_INITIALIZING) 1348 && pThread->LockValidator.pRec) 1349 ASMAtomicWritePtr((void * volatile *)&pThread->LockValidator.pRec, NULL); 1350 Assert( pThread->LockValidator.pRec == NULL 1351 || RTTHREAD_IS_SLEEPING(enmActualState)); 1338 1352 } 1339 1353 }
Note:
See TracChangeset
for help on using the changeset viewer.