#include <stdio.h>
#define __STDC_FORMAT_MACROS
#include <inttypes.h>
-#include <vector>
#include "model.h"
#include "action.h"
return type == THREAD_START;
}
+bool ModelAction::is_thread_join() const
+{
+ return type == THREAD_JOIN;
+}
+
bool ModelAction::is_relseq_fixup() const
{
return type == MODEL_FIXUP_RELSEQ;
return is_write() || is_rmwr();
}
+bool ModelAction::is_yield() const
+{
+ return type == THREAD_YIELD;
+}
+
bool ModelAction::is_rmwr() const
{
return type == ATOMIC_RMWR;
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;
+}