X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=action.h;h=9fa7a91c3f93443714f54ec34b153c4d09a1c20b;hb=088be911a245fefcb5afa168c00c6106f22f336f;hp=da22882c3870ae361758ae97a7700a728203ea7b;hpb=fc57069afade38b4d4392890e488a444e87447a8;p=c11tester.git diff --git a/action.h b/action.h index da22882c..9fa7a91c 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 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, /**< 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 {