VirtualBox

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


Ignore:
Timestamp:
Dec 18, 2009 12:58:10 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
56147
Message:

IPRT,PDMCritSect: More lock validator refactoring.

File:
1 edited

Legend:

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

    r25467 r25478  
    138138 *
    139139 * @returns Same as RTSEmMutexRequestNoResume
    140  * @param   MutexSem                    The mutex handle.
    141  * @param   cMillies                    The number of milliseconds to wait.
    142  * @param   TSEMMUTEX_STRICT_POS_DECL   The source position of the caller.
     140 * @param   MutexSem            The mutex handle.
     141 * @param   cMillies            The number of milliseconds to wait.
     142 * @param   pSrcPos             The source position of the caller.
    143143 */
    144 DECL_FORCE_INLINE(int) rtSemMutexRequestNoResume(RTSEMMUTEX MutexSem, unsigned cMillies, RTSEMMUTEX_STRICT_POS_DECL)
     144DECL_FORCE_INLINE(int) rtSemMutexRequestNoResume(RTSEMMUTEX MutexSem, unsigned cMillies, PCRTLOCKVALIDATORSRCPOS pSrcPos)
    145145{
    146146    /*
     
    153153#ifdef RTSEMMUTEX_STRICT
    154154    RTTHREAD hThreadSelf = RTThreadSelfAutoAdopt();
    155     RTLockValidatorCheckOrder(&pThis->ValidatorRec, hThreadSelf, RTSEMMUTEX_STRICT_POS_ARGS);
     155    RTLockValidatorCheckOrder(&pThis->ValidatorRec, hThreadSelf, pSrcPos);
    156156#else
    157157    RTTHREAD hThreadSelf = RTThreadSelf();
     
    165165#ifdef RTSEMMUTEX_STRICT
    166166        int rc9 = RTLockValidatorCheckBlocking(&pThis->ValidatorRec, hThreadSelf,
    167                                                RTTHREADSTATE_MUTEX, true, uId, RT_SRC_POS_ARGS);
     167                                               RTTHREADSTATE_MUTEX, true, pSrcPos);
    168168        if (RT_FAILURE(rc9))
    169169            return rc9;
    170 #else
     170#endif
    171171        RTThreadBlocking(hThreadSelf, RTTHREADSTATE_MUTEX);
    172 #endif
    173172    }
    174173    int rc = WaitForSingleObjectEx(pThis->hMtx,
     
    180179        case WAIT_OBJECT_0:
    181180#ifdef RTSEMMUTEX_STRICT
    182             RTLockValidatorSetOwner(&pThis->ValidatorRec, hThreadSelf, RTSEMMUTEX_STRICT_POS_ARGS);
     181            RTLockValidatorSetOwner(&pThis->ValidatorRec, hThreadSelf, pSrcPos);
    183182#endif
    184183            return VINF_SUCCESS;
     
    204203{
    205204#ifndef RTSEMMUTEX_STRICT
    206     return rtSemMutexRequestNoResume(MutexSem, cMillies, RTSEMMUTEX_STRICT_POS_ARGS);
     205    return rtSemMutexRequestNoResume(MutexSem, cMillies, NULL);
    207206#else
    208     return RTSemMutexRequestNoResumeDebug(MutexSem, cMillies, (uintptr_t)ASMReturnAddress(), RT_SRC_POS);
     207    RTLOCKVALIDATORSRCPOS SrcPos = RTLOCKVALIDATORSRCPOS_INIT_NORMAL_API();
     208    return rtSemMutexRequestNoResume(MutexSem, cMillies, &SrcPos);
    209209#endif
    210210}
     
    213213RTDECL(int) RTSemMutexRequestNoResumeDebug(RTSEMMUTEX MutexSem, unsigned cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL)
    214214{
    215 #ifdef RTSEMMUTEX_STRICT
    216     return rtSemMutexRequestNoResume(MutexSem, cMillies, RTSEMMUTEX_STRICT_POS_ARGS);
    217 #else
    218     return RTSemMutexRequestNoResume(MutexSem, cMillies);
    219 #endif
     215    RTLOCKVALIDATORSRCPOS SrcPos = RTLOCKVALIDATORSRCPOS_INIT_DEBUG_API();
     216    return rtSemMutexRequestNoResume(MutexSem, cMillies, &SrcPos);
    220217}
    221218
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