X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fpthread-lock.hpp;h=7d037e47226cf2469503bf30b8073915fb134349;hb=HEAD;hp=35fde097cadbf92ea6f6744bc236272c2120c5e7;hpb=0a325f4dec3f6d553dad5d2c26ebfdc78201c363;p=lttng-tools.git diff --git a/src/common/pthread-lock.hpp b/src/common/pthread-lock.hpp index 35fde097c..7d037e472 100644 --- a/src/common/pthread-lock.hpp +++ b/src/common/pthread-lock.hpp @@ -10,8 +10,8 @@ #include -#include #include +#include namespace lttng { namespace pthread { @@ -26,13 +26,17 @@ namespace details { */ class mutex { public: - mutex(pthread_mutex_t& mutex_p) : _mutex{mutex_p} + explicit mutex(pthread_mutex_t& mutex_p) : _mutex(mutex_p) { } + ~mutex() = default; + /* "Not copyable" and "not moveable" Mutex requirements. */ - mutex(mutex const &) = delete; - mutex &operator=(mutex const &) = delete; + mutex(mutex const&) = delete; + mutex(mutex&&) = delete; + mutex& operator=(mutex const&) = delete; + mutex& operator=(mutex&&) = delete; void lock() { @@ -57,7 +61,10 @@ public: void unlock() { if (pthread_mutex_unlock(&_mutex) != 0) { - LTTNG_THROW_POSIX("Failed to unlock mutex", errno); + /* + * Unlock cannot throw as it is called as part of lock_guard's destructor. + */ + abort(); } } @@ -73,11 +80,16 @@ private: */ class lock_guard { public: - lock_guard(pthread_mutex_t& mutex) : _mutex{mutex}, _guard(_mutex) + explicit lock_guard(pthread_mutex_t& mutex) : _mutex(mutex), _guard(_mutex) { } - lock_guard(const lock_guard &) = delete; + ~lock_guard() = default; + + lock_guard(const lock_guard&) = delete; + lock_guard(lock_guard&&) = delete; + lock_guard& operator=(const lock_guard&) = delete; + lock_guard& operator=(lock_guard&&) = delete; private: details::mutex _mutex;