model: add 'const'
[c11tester.git] / action.cc
index 1007e762ee5258305bbd8ef5b403db5a874f17cc..4de6f354bfbccfbedc9061538ecb48be8e69e3e2 100644 (file)
--- a/action.cc
+++ b/action.cc
@@ -1,7 +1,6 @@
 #include <stdio.h>
 #define __STDC_FORMAT_MACROS
 #include <inttypes.h>
-#include <vector>
 
 #include "model.h"
 #include "action.h"
@@ -151,6 +150,11 @@ bool ModelAction::could_be_write() const
        return is_write() || is_rmwr();
 }
 
+bool ModelAction::is_yield() const
+{
+       return type == THREAD_YIELD;
+}
+
 bool ModelAction::is_rmwr() const
 {
        return type == ATOMIC_RMWR;
@@ -651,3 +655,17 @@ bool ModelAction::may_read_from(const Promise *promise) const
                        return true;
        return false;
 }
+
+/**
+ * Only valid for LOCK, TRY_LOCK, UNLOCK, and WAIT operations.
+ * @return The mutex operated on by this action, if any; otherwise NULL
+ */
+std::mutex * ModelAction::get_mutex() const
+{
+       if (is_trylock() || is_lock() || is_unlock())
+               return (std::mutex *)get_location();
+       else if (is_wait())
+               return (std::mutex *)get_value();
+       else
+               return NULL;
+}