X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=blobdiff_plain;f=action.h;h=9fa7a91c3f93443714f54ec34b153c4d09a1c20b;hp=5ab36b360ffd0bd3889f456a53e61f6c9cfe7712;hb=16ef61e0af2f98a34acaa919077def37ece3b5bd;hpb=11b4b27470ecbaf996a699432dd67e2ca52239b5 diff --git a/action.h b/action.h index 5ab36b3..9fa7a91 100644 --- a/action.h +++ b/action.h @@ -32,13 +32,15 @@ typedef enum action_type { THREAD_START, /**< First action in each thread */ THREAD_YIELD, /**< A thread yield action */ THREAD_JOIN, /**< A thread join action */ + THREAD_FINISH, /**< A thread completion action */ ATOMIC_READ, /**< An atomic read action */ ATOMIC_WRITE, /**< An atomic write action */ - ATOMIC_RMWR, /**< The read of an atomic read-modify-write action */ - ATOMIC_RMW, /**< The write of an atomic read-modify-write action */ - ATOMIC_RMWC, /**< Terminate an atomic read-modify-write action w/o write */ - ATOMIC_INIT /**< Initialization of an atomic object (e.g., + ATOMIC_RMWR, /**< The read part of an atomic RMW action */ + ATOMIC_RMW, /**< The write part of an atomic RMW action */ + ATOMIC_RMWC, /**< Convert an atomic RMW action into a READ */ + ATOMIC_INIT, /**< Initialization of an atomic object (e.g., * atomic_init()) */ + ATOMIC_FENCE } action_type_t; /* Forward declaration */ @@ -70,6 +72,7 @@ public: bool is_rmwr() const; bool is_rmwc() const; bool is_rmw() const; + bool is_fence() const; bool is_initialization() const; bool is_acquire() const; bool is_release() const; @@ -81,7 +84,9 @@ public: void create_cv(const ModelAction *parent = NULL); ClockVector * get_cv() const { return cv; } void read_from(const ModelAction *act); + void synchronize_with(const ModelAction *act); + bool has_synchronized_with(const ModelAction *act) const; bool happens_before(const ModelAction *act) const; inline bool operator <(const ModelAction& act) const { @@ -91,7 +96,8 @@ public: return get_seq_number() > act.get_seq_number(); } - void upgrade_rmw(ModelAction * act); + void process_rmw(ModelAction * act); + void copy_typeandorder(ModelAction * act); MEMALLOC private: