RTDECL(uint32_t) RTCritSectSetSubClass(PRTCRITSECT pCritSect, uint32_t uSubClass) { #ifdef RTCRITSECT_STRICT AssertPtrReturn(pCritSect, RTLOCKVAL_SUB_CLASS_INVALID); AssertReturn(pCritSect->u32Magic == RTCRITSECT_MAGIC, RTLOCKVAL_SUB_CLASS_INVALID); AssertReturn(!(pCritSect->fFlags & RTCRITSECT_FLAGS_NOP), RTLOCKVAL_SUB_CLASS_INVALID); return RTLockValidatorRecExclSetSubClass(pCritSect->pValidatorRec, uSubClass); #else return RTLOCKVAL_SUB_CLASS_INVALID; #endif }
RTDECL(uint32_t) RTCritSectRwSetSubClass(PRTCRITSECTRW pThis, uint32_t uSubClass) { AssertPtrReturn(pThis, RTLOCKVAL_SUB_CLASS_INVALID); AssertReturn(pThis->u32Magic == RTCRITSECTRW_MAGIC, RTLOCKVAL_SUB_CLASS_INVALID); #ifdef RTCRITSECTRW_STRICT AssertReturn(!(pThis->fFlags & RTCRITSECT_FLAGS_NOP), RTLOCKVAL_SUB_CLASS_INVALID); RTLockValidatorRecSharedSetSubClass(pThis->pValidatorRead, uSubClass); return RTLockValidatorRecExclSetSubClass(pThis->pValidatorWrite, uSubClass); #else NOREF(uSubClass); return RTLOCKVAL_SUB_CLASS_INVALID; #endif }
RTDECL(uint32_t) RTSemMutexSetSubClass(RTSEMMUTEX hMutexSem, uint32_t uSubClass) { #ifdef RTSEMMUTEX_STRICT /* * Validate. */ RTSEMMUTEXINTERNAL *pThis = hMutexSem; AssertPtrReturn(pThis, RTLOCKVAL_SUB_CLASS_INVALID); AssertReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, RTLOCKVAL_SUB_CLASS_INVALID); return RTLockValidatorRecExclSetSubClass(&pThis->ValidatorRec, uSubClass); #else return RTLOCKVAL_SUB_CLASS_INVALID; #endif }
RTDECL(uint32_t) RTSemRWSetSubClass(RTSEMRW hRWSem, uint32_t uSubClass) { #ifdef RTSEMRW_STRICT /* * Validate handle. */ struct RTSEMRWINTERNAL *pThis = hRWSem; AssertPtrReturn(pThis, RTLOCKVAL_SUB_CLASS_INVALID); AssertReturn(pThis->u32Magic == RTSEMRW_MAGIC, RTLOCKVAL_SUB_CLASS_INVALID); RTLockValidatorRecSharedSetSubClass(&pThis->ValidatorRead, uSubClass); return RTLockValidatorRecExclSetSubClass(&pThis->ValidatorWrite, uSubClass); #else return RTLOCKVAL_SUB_CLASS_INVALID; #endif }