diff options
| author | Hennadii Stepanov <[email protected]> | 2020-05-28 09:55:04 +0300 |
|---|---|---|
| committer | Hennadii Stepanov <[email protected]> | 2020-05-28 09:55:04 +0300 |
| commit | 971a468ccf0474ca00fa7d20278569b8fb11f0fb (patch) | |
| tree | c2e37c99581fee3f716fe77faee3921b63969cb4 /src | |
| parent | refactor: Rename LockGuard to StdLockGuard for consistency with StdMutex (diff) | |
| download | discoin-971a468ccf0474ca00fa7d20278569b8fb11f0fb.tar.xz discoin-971a468ccf0474ca00fa7d20278569b8fb11f0fb.zip | |
Use template function instead of void* parameter
This change gets rid of -Wthread-safety-attributes warning spam.
Diffstat (limited to 'src')
| -rw-r--r-- | src/sync.cpp | 5 | ||||
| -rw-r--r-- | src/sync.h | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/sync.cpp b/src/sync.cpp index c3312b5a0..9abdedbed 100644 --- a/src/sync.cpp +++ b/src/sync.cpp @@ -219,12 +219,15 @@ static bool LockHeld(void* mutex) return false; } -void AssertLockHeldInternal(const char* pszName, const char* pszFile, int nLine, void* cs) +template <typename MutexType> +void AssertLockHeldInternal(const char* pszName, const char* pszFile, int nLine, MutexType* cs) { if (LockHeld(cs)) return; tfm::format(std::cerr, "Assertion failed: lock %s not held in %s:%i; locks held:\n%s", pszName, pszFile, nLine, LocksHeld()); abort(); } +template void AssertLockHeldInternal(const char*, const char*, int, Mutex*); +template void AssertLockHeldInternal(const char*, const char*, int, RecursiveMutex*); void AssertLockNotHeldInternal(const char* pszName, const char* pszFile, int nLine, void* cs) { diff --git a/src/sync.h b/src/sync.h index 0c6f0ef0a..60e5a87ae 100644 --- a/src/sync.h +++ b/src/sync.h @@ -52,7 +52,8 @@ void EnterCritical(const char* pszName, const char* pszFile, int nLine, void* cs void LeaveCritical(); void CheckLastCritical(void* cs, std::string& lockname, const char* guardname, const char* file, int line); std::string LocksHeld(); -void AssertLockHeldInternal(const char* pszName, const char* pszFile, int nLine, void* cs) ASSERT_EXCLUSIVE_LOCK(cs); +template <typename MutexType> +void AssertLockHeldInternal(const char* pszName, const char* pszFile, int nLine, MutexType* cs) ASSERT_EXCLUSIVE_LOCK(cs); void AssertLockNotHeldInternal(const char* pszName, const char* pszFile, int nLine, void* cs); void DeleteLock(void* cs); @@ -66,7 +67,8 @@ extern bool g_debug_lockorder_abort; void static inline EnterCritical(const char* pszName, const char* pszFile, int nLine, void* cs, bool fTry = false) {} void static inline LeaveCritical() {} void static inline CheckLastCritical(void* cs, std::string& lockname, const char* guardname, const char* file, int line) {} -void static inline AssertLockHeldInternal(const char* pszName, const char* pszFile, int nLine, void* cs) ASSERT_EXCLUSIVE_LOCK(cs) {} +template <typename MutexType> +void static inline AssertLockHeldInternal(const char* pszName, const char* pszFile, int nLine, MutexType* cs) ASSERT_EXCLUSIVE_LOCK(cs) {} void static inline AssertLockNotHeldInternal(const char* pszName, const char* pszFile, int nLine, void* cs) {} void static inline DeleteLock(void* cs) {} #endif |