X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=model.h;h=8593b98f06a186aa7e297cd661219edf1c69c264;hb=84e24d516d4e9dbd30f1fff7e9a185d1540d20eb;hp=2093bf4b19cb31579d2b5e1040bcdb3ce55eb63c;hpb=c0ba8bc46e9c15214d0fce2d3f8f984b11636683;p=model-checker.git diff --git a/model.h b/model.h index 2093bf4..8593b98 100644 --- a/model.h +++ b/model.h @@ -14,13 +14,13 @@ #include "schedule.h" #include "mymemory.h" #include "libthreads.h" -#include "libatomic.h" #include "threads.h" #include "action.h" #include "clockvector.h" /* Forward declaration */ class NodeStack; +class CycleGraph; /** @brief The central structure for model-checking */ class ModelChecker { @@ -55,6 +55,7 @@ public: int switch_to_master(ModelAction *act); ClockVector * get_cv(thread_id_t tid); bool next_execution(); + bool isfeasible(); MEMALLOC private: @@ -81,6 +82,10 @@ private: ModelAction * get_parent_action(thread_id_t tid); ModelAction * get_last_seq_cst(const void *location); void build_reads_from_past(ModelAction *curr); + ModelAction * process_rmw(ModelAction * curr); + void r_modification_order(ModelAction * curr, const ModelAction *rf); + void w_modification_order(ModelAction * curr); + ModelAction *current_action; ModelAction *diverge; @@ -98,6 +103,7 @@ private: std::vector *thrd_last_action; NodeStack *node_stack; ModelAction *next_backtrack; + CycleGraph * cyclegraph; }; extern ModelChecker *model;