Import CStringView from the Babeltrace tree
[lttng-tools.git] / src / common / pthread-lock.hpp
index 35fde097cadbf92ea6f6744bc236272c2120c5e7..7d037e47226cf2469503bf30b8073915fb134349 100644 (file)
@@ -10,8 +10,8 @@
 
 #include <common/exception.hpp>
 
-#include <pthread.h>
 #include <mutex>
+#include <pthread.h>
 
 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;
This page took 0.023056 seconds and 4 git commands to generate.