#include <stdio.h>
#include "model.h"
+#include "action.h"
+#include "tree.h"
#include "schedule.h"
#include "common.h"
{
DEBUG("+++ Resetting to initial state +++\n");
std::map<thread_id_t, class Thread *>::iterator it;
- for (it = thread_map.begin(); it != thread_map.end(); it++) {
+ for (it = thread_map.begin(); it != thread_map.end(); it++)
delete (*it).second;
- }
thread_map.clear();
action_trace = new action_list_t();
currentNode = rootNode;
return type == ATOMIC_WRITE;
}
+bool ModelAction::is_acquire()
+{
+ switch (order) {
+ case memory_order_acquire:
+ case memory_order_acq_rel:
+ case memory_order_seq_cst:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool ModelAction::is_release()
+{
+ switch (order) {
+ case memory_order_release:
+ case memory_order_acq_rel:
+ case memory_order_seq_cst:
+ return true;
+ default:
+ return false;
+ }
+}
+
bool ModelAction::same_var(ModelAction *act)
{
return location == act->location;