model/action: move complicated read_from logic into model.cc
[model-checker.git] / model.h
diff --git a/model.h b/model.h
index 80917741c0048ad1d05ca952d2459484f1523fce..6bb4788c061b90e427720214756c144a2ff325fc 100644 (file)
--- a/model.h
+++ b/model.h
@@ -5,7 +5,6 @@
 #ifndef __MODEL_H__
 #define __MODEL_H__
 
-#include <list>
 #include <vector>
 #include <cstddef>
 #include <ucontext.h>
@@ -154,6 +153,7 @@ private:
        bool process_mutex(ModelAction *curr);
        bool process_thread_action(ModelAction *curr);
        void process_relseq_fixup(ModelAction *curr, work_queue_t *work_queue);
+       bool read_from(ModelAction *act, const ModelAction *rf);
        bool check_action_enabled(ModelAction *curr);
 
        bool take_step();
@@ -171,7 +171,9 @@ private:
        void check_curr_backtracking(ModelAction * curr);
        void add_action_to_lists(ModelAction *act);
        ModelAction * get_last_action(thread_id_t tid) const;
-       ModelAction * get_last_seq_cst(ModelAction *curr) const;
+       ModelAction * get_last_fence_release(thread_id_t tid) const;
+       ModelAction * get_last_seq_cst_write(ModelAction *curr) const;
+       ModelAction * get_last_seq_cst_fence(thread_id_t tid, const ModelAction *before_fence) const;
        ModelAction * get_last_unlock(ModelAction *curr) const;
        void build_reads_from_past(ModelAction *curr);
        ModelAction * process_rmw(ModelAction *curr);
@@ -213,6 +215,7 @@ private:
        std::vector< struct release_seq *, SnapshotAlloc<struct release_seq *> > *pending_rel_seqs;
 
        std::vector< ModelAction *, SnapshotAlloc<ModelAction *> > *thrd_last_action;
+       std::vector< ModelAction *, SnapshotAlloc<ModelAction *> > *thrd_last_fence_release;
        NodeStack *node_stack;
 
        /** Private data members that should be snapshotted. They are grouped