VirtualBox

Changeset 25467 in vbox for trunk/src/VBox/Runtime/r3/win


Ignore:
Timestamp:
Dec 17, 2009 3:16:55 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
56133
Message:

IPRT,PDMCritSect: More lock validation.

File:
1 edited

Legend:

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

    r25409 r25467  
    162162     */
    163163    if (cMillies > 0)
    164         RTSEMMUTEX_STRICT_BLOCK(hThreadSelf, &pThis->ValidatorRec);
     164    {
     165#ifdef RTSEMMUTEX_STRICT
     166        int rc9 = RTLockValidatorCheckBlocking(&pThis->ValidatorRec, hThreadSelf,
     167                                               RTTHREADSTATE_MUTEX, true, uId, RT_SRC_POS_ARGS);
     168        if (RT_FAILURE(rc9))
     169            return rc9;
     170#else
     171        RTThreadBlocking(hThreadSelf, RTTHREADSTATE_MUTEX);
     172#endif
     173    }
    165174    int rc = WaitForSingleObjectEx(pThis->hMtx,
    166175                                   cMillies == RT_INDEFINITE_WAIT ? INFINITE : cMillies,
    167176                                   TRUE /*bAlertable*/);
    168     RTSEMMUTEX_STRICT_UNBLOCK(hThreadSelf);
     177    RTThreadUnblocked(hThreadSelf, RTTHREADSTATE_MUTEX);
    169178    switch (rc)
    170179    {
    171180        case WAIT_OBJECT_0:
    172181#ifdef RTSEMMUTEX_STRICT
    173             RTLockValidatorWriteLockInc(RTLockValidatorSetOwner(&pThis->ValidatorRec, hThreadSelf, RTSEMMUTEX_STRICT_POS_ARGS));
     182            RTLockValidatorSetOwner(&pThis->ValidatorRec, hThreadSelf, RTSEMMUTEX_STRICT_POS_ARGS);
    174183#endif
    175184            return VINF_SUCCESS;
     
    227236    if (   pThis->ValidatorRec.hThread != NIL_RTTHREAD
    228237        && pThis->ValidatorRec.hThread == RTThreadSelf())
    229         RTLockValidatorWriteLockDec(RTLockValidatorUnsetOwner(&pThis->ValidatorRec));
     238        RTLockValidatorUnsetOwner(&pThis->ValidatorRec);
    230239    else
    231240        AssertMsgFailed(("%p hThread=%RTthrd\n", pThis, pThis->ValidatorRec.hThread));
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