MOVEONLY Move AnnotatedMixin declaration
Move AnnotatedMixin closer to where it's used, and after the DEBUG_LOCKORDER function declarations so it can call them.
This commit is contained in:
parent
41b88e9337
commit
ba1f095aad
1 changed files with 24 additions and 24 deletions
48
src/sync.h
48
src/sync.h
|
@ -46,30 +46,6 @@ LEAVE_CRITICAL_SECTION(mutex); // no RAII
|
||||||
// //
|
// //
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
|
|
||||||
/**
|
|
||||||
* Template mixin that adds -Wthread-safety locking
|
|
||||||
* annotations to a subset of the mutex API.
|
|
||||||
*/
|
|
||||||
template <typename PARENT>
|
|
||||||
class LOCKABLE AnnotatedMixin : public PARENT
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void lock() EXCLUSIVE_LOCK_FUNCTION()
|
|
||||||
{
|
|
||||||
PARENT::lock();
|
|
||||||
}
|
|
||||||
|
|
||||||
void unlock() UNLOCK_FUNCTION()
|
|
||||||
{
|
|
||||||
PARENT::unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool try_lock() EXCLUSIVE_TRYLOCK_FUNCTION(true)
|
|
||||||
{
|
|
||||||
return PARENT::try_lock();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef DEBUG_LOCKORDER
|
#ifdef DEBUG_LOCKORDER
|
||||||
void EnterCritical(const char* pszName, const char* pszFile, int nLine, void* cs, bool fTry = false);
|
void EnterCritical(const char* pszName, const char* pszFile, int nLine, void* cs, bool fTry = false);
|
||||||
void LeaveCritical();
|
void LeaveCritical();
|
||||||
|
@ -94,6 +70,30 @@ void static inline DeleteLock(void* cs) {}
|
||||||
#define AssertLockHeld(cs) AssertLockHeldInternal(#cs, __FILE__, __LINE__, &cs)
|
#define AssertLockHeld(cs) AssertLockHeldInternal(#cs, __FILE__, __LINE__, &cs)
|
||||||
#define AssertLockNotHeld(cs) AssertLockNotHeldInternal(#cs, __FILE__, __LINE__, &cs)
|
#define AssertLockNotHeld(cs) AssertLockNotHeldInternal(#cs, __FILE__, __LINE__, &cs)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Template mixin that adds -Wthread-safety locking
|
||||||
|
* annotations to a subset of the mutex API.
|
||||||
|
*/
|
||||||
|
template <typename PARENT>
|
||||||
|
class LOCKABLE AnnotatedMixin : public PARENT
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void lock() EXCLUSIVE_LOCK_FUNCTION()
|
||||||
|
{
|
||||||
|
PARENT::lock();
|
||||||
|
}
|
||||||
|
|
||||||
|
void unlock() UNLOCK_FUNCTION()
|
||||||
|
{
|
||||||
|
PARENT::unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool try_lock() EXCLUSIVE_TRYLOCK_FUNCTION(true)
|
||||||
|
{
|
||||||
|
return PARENT::try_lock();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapped mutex: supports recursive locking, but no waiting
|
* Wrapped mutex: supports recursive locking, but no waiting
|
||||||
* TODO: We should move away from using the recursive lock by default.
|
* TODO: We should move away from using the recursive lock by default.
|
||||||
|
|
Loading…
Add table
Reference in a new issue