VirtualBox

Changeset 25491 in vbox for trunk/src/VBox/Runtime/r3


Ignore:
Timestamp:
Dec 18, 2009 3:20:48 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
56162
Message:

IPRT,PDMCritSect: Fixing critsect regression; contains under construction rw deadlock detection code.

Location:
trunk/src/VBox/Runtime/r3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/linux/semmutex-linux.cpp

    r25478 r25491  
    120120        pThis->cNesting = 0;
    121121#ifdef RTSEMMUTEX_STRICT
    122         RTLockValidatorInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
     122        RTLockValidatorRecInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
    123123#endif
    124124
     
    156156    pThis->cNesting = 0;
    157157#ifdef RTSEMMUTEX_STRICT
    158     RTLockValidatorDelete(&pThis->ValidatorRec);
     158    RTLockValidatorRecDelete(&pThis->ValidatorRec);
    159159#endif
    160160
  • trunk/src/VBox/Runtime/r3/posix/semmutex-posix.cpp

    r25478 r25491  
    102102                pThis->u32Magic = RTSEMMUTEX_MAGIC;
    103103#ifdef RTSEMMUTEX_STRICT
    104                 RTLockValidatorInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
     104                RTLockValidatorRecInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
    105105#endif
    106106
     
    147147    pThis->cNesting = UINT32_MAX;
    148148#ifdef RTSEMMUTEX_STRICT
    149     RTLockValidatorDelete(&pThis->ValidatorRec);
     149    RTLockValidatorRecDelete(&pThis->ValidatorRec);
    150150#endif
    151151    RTMemTmpFree(pThis);
  • trunk/src/VBox/Runtime/r3/posix/semrw-posix.cpp

    r25478 r25491  
    8585#ifdef RTSEMRW_STRICT
    8686    /** The validator record for the writer. */
    87     RTLOCKVALIDATORREC  ValidatorRec;
     87    RTLOCKVALIDATORREC      ValidatorWrite;
     88    /** The validator record for the readers. */
     89    RTLOCKVALIDATORSHARED   ValidatorRead;
    8890#endif
    8991};
     
    116118                pThis->Writer = (pthread_t)-1;
    117119#ifdef RTSEMRW_STRICT
    118                 RTLockValidatorInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
     120                RTLockValidatorRecInit(&pThis->ValidatorWrite, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
     121                RTLockValidatorSharedRecInit(&pThis->ValidatorRead,  NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
    119122#endif
    120123                *pRWSem = pThis;
     
    157160    {
    158161#ifdef RTSEMRW_STRICT
    159         RTLockValidatorInit(&pThis->ValidatorRec, NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
     162        RTLockValidatorSharedRecDelete(&pThis->ValidatorRead);
     163        RTLockValidatorRecDelete(&pThis->ValidatorWrite);
    160164#endif
    161165        RTMemFree(pThis);
     
    327331#ifdef RTSEMRW_STRICT
    328332    RTTHREAD hThreadSelf = RTThreadSelfAutoAdopt();
    329     RTLockValidatorCheckOrder(&pThis->ValidatorRec, hThreadSelf, pSrcPos);
     333    RTLockValidatorCheckOrder(&pThis->ValidatorWrite, hThreadSelf, pSrcPos);
    330334#endif
    331335
     
    339343    {
    340344#ifdef RTSEMRW_STRICT
    341         int rc9 = RTLockValidatorRecordRecursion(&pThis->ValidatorRec, pSrcPos);
     345        int rc9 = RTLockValidatorRecordRecursion(&pThis->ValidatorWrite, pSrcPos);
    342346        if (RT_FAILURE(rc9))
    343347            return rc9;
     
    357361    {
    358362#ifdef RTSEMRW_STRICT
    359         int rc9 = RTLockValidatorCheckBlocking(&pThis->ValidatorRec, hThreadSelf, RTTHREADSTATE_RW_WRITE, true, pSrcPos);
     363        int rc9 = RTLockValidatorCheckBlocking(&pThis->ValidatorWrite, hThreadSelf, RTTHREADSTATE_RW_WRITE, true, pSrcPos);
    360364        if (RT_FAILURE(rc9))
    361365            return rc9;
     
    411415    pThis->cWrites = 1;
    412416#ifdef RTSEMRW_STRICT
    413     RTLockValidatorSetOwner(&pThis->ValidatorRec, hThreadSelf, pSrcPos);
     417    RTLockValidatorSetOwner(&pThis->ValidatorWrite, hThreadSelf, pSrcPos);
    414418#endif
    415419    return VINF_SUCCESS;
     
    479483    {
    480484#ifdef RTSEMRW_STRICT
    481         RTLockValidatorRecordUnwind(&pThis->ValidatorRec);
     485        RTLockValidatorRecordUnwind(&pThis->ValidatorWrite);
    482486#endif
    483487        return VINF_SUCCESS;
     
    488492     */
    489493#ifdef RTSEMRW_STRICT
    490     RTLockValidatorCheckReleaseOrder(&pThis->ValidatorRec);
    491     RTLockValidatorUnsetOwner(&pThis->ValidatorRec);
     494    RTLockValidatorCheckReleaseOrder(&pThis->ValidatorWrite);
     495    RTLockValidatorUnsetOwner(&pThis->ValidatorWrite);
    492496#endif
    493497
  • trunk/src/VBox/Runtime/r3/win/semmutex-win.cpp

    r25478 r25491  
    8787            pThis->hMtx = hMtx;
    8888#ifdef RTSEMMUTEX_STRICT
    89             RTLockValidatorInit(&pThis->ValidatorRec,  NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
     89            RTLockValidatorRecInit(&pThis->ValidatorRec,  NIL_RTLOCKVALIDATORCLASS, RTLOCKVALIDATOR_SUB_CLASS_NONE, NULL, pThis);
    9090#endif
    9191            *pMutexSem = pThis;
     
    127127
    128128#ifdef RTSEMMUTEX_STRICT
    129     RTLockValidatorDelete(&pThis->ValidatorRec);
     129    RTLockValidatorRecDelete(&pThis->ValidatorRec);
    130130#endif
    131131    RTMemFree(pThis);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette