X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=action.h;h=7c457076501f77f93550da6fe629e2e625a0f2cb;hb=b7a6b3c7fb66628a4b14af804418dbfff4072e95;hp=36cec25dcf05cd9d24e971b22c6626e64585bde4;hpb=e70c8f03d3eb64740df9407442180e679a31213e;p=model-checker.git diff --git a/action.h b/action.h index 36cec25..7c45707 100644 --- a/action.h +++ b/action.h @@ -34,7 +34,9 @@ typedef enum action_type { THREAD_JOIN, /**< A thread join action */ ATOMIC_READ, /**< An atomic read action */ ATOMIC_WRITE, /**< An atomic write action */ - ATOMIC_RMW, /**< An atomic read-modify-write action */ + 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()) */ } action_type_t; @@ -65,6 +67,8 @@ public: bool is_read() const; bool is_write() const; + bool is_rmwr() const; + bool is_rmwc() const; bool is_rmw() const; bool is_initialization() const; bool is_acquire() const; @@ -77,6 +81,8 @@ public: void create_cv(const ModelAction *parent = NULL); ClockVector * get_cv() const { return cv; } void read_from(const ModelAction *act); + void synchronized(const ModelAction *act); + bool happens_before(const ModelAction *act) const; @@ -87,7 +93,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: