X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=action.h;h=fead25e649a3dfcb575e9d5aae353b4363e92d8c;hp=f54c9d2aeb9b03d784d6c0762b037e765000d23b;hb=a7df00de36ef87549b654cfbc5c6b098cbba7a5b;hpb=5afb7f87917a67712fe289470ee03de0864fee7d diff --git a/action.h b/action.h index f54c9d2a..fead25e6 100644 --- a/action.h +++ b/action.h @@ -11,13 +11,13 @@ #include "mymemory.h" #include "memoryorder.h" #include "modeltypes.h" +#include "pthread.h" /* Forward declarations */ class ClockVector; class Thread; -class Promise; -namespace std { +namespace cdsc { class mutex; } @@ -50,8 +50,6 @@ using std::memory_order_seq_cst; /** @brief Represents an action type, identifying one of several types of * ModelAction */ typedef enum action_type { - MODEL_FIXUP_RELSEQ, /**< Special ModelAction: finalize a release - * sequence */ THREAD_CREATE, /**< A thread creation action */ THREAD_START, /**< First action in each thread */ THREAD_YIELD, /**< A thread yield action */ @@ -59,6 +57,7 @@ typedef enum action_type { THREAD_FINISH, /**< A thread completion action */ PTHREAD_CREATE, /**< A pthread creation action */ PTHREAD_JOIN, /**< A pthread join action */ + ATOMIC_UNINIT, /**< Represents an uninitialized atomic */ ATOMIC_READ, /**< An atomic read action */ ATOMIC_WRITE, /**< An atomic write action */ @@ -74,8 +73,9 @@ typedef enum action_type { ATOMIC_NOTIFY_ONE, /**< A notify_one action */ ATOMIC_NOTIFY_ALL, /**< A notify all action */ ATOMIC_WAIT, /**< A wait action */ - ATOMIC_ANNOTATION /**< An annotation action to pass information + ATOMIC_ANNOTATION, /**< An annotation action to pass information to a trace analysis */ + NOOP } action_type_t; /* Forward declaration */ @@ -108,14 +108,12 @@ public: uint64_t get_write_value() const; uint64_t get_return_value() const; const ModelAction * get_reads_from() const { return reads_from; } - Promise * get_reads_from_promise() const { return reads_from_promise; } - std::mutex * get_mutex() const; + cdsc::mutex * get_mutex() const; Node * get_node() const; void set_node(Node *n) { node = n; } void set_read_from(const ModelAction *act); - void set_read_from_promise(Promise *promise); /** Store the most recent fence-release from the same thread * @param fence The fence-release that occured prior to this */ @@ -128,7 +126,6 @@ public: void set_try_lock(bool obtainedlock); bool is_thread_start() const; bool is_thread_join() const; - bool is_relseq_fixup() const; bool is_mutex_op() const; bool is_lock() const; bool is_trylock() const; @@ -178,15 +175,10 @@ public: void process_rmw(ModelAction * act); void copy_typeandorder(ModelAction * act); - void set_sleep_flag() { sleep_flag=true; } - bool get_sleep_flag() { return sleep_flag; } unsigned int hash() const; bool equals(const ModelAction *x) const { return this == x; } - bool equals(const Promise *x) const { return false; } - bool may_read_from(const ModelAction *write) const; - bool may_read_from(const Promise *promise) const; MEMALLOC void set_value(uint64_t val) { value = val; } @@ -224,13 +216,6 @@ private: */ const ModelAction *reads_from; - /** - * @brief The promise that this action reads from - * - * Only valid for reads - */ - Promise *reads_from_promise; - /** @brief The last fence release from the same thread */ const ModelAction *last_fence_release; @@ -258,8 +243,6 @@ private: * vectors for all operations. */ ClockVector *cv; - - bool sleep_flag; }; #endif /* __ACTION_H__ */