X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=action.h;h=d0f02a327e6d8373d35b2d56c3dd250a40aa948b;hb=eb07120dfdbb206124f7857016a71b6ef0b9eb99;hp=86012c123d5b18cb7404787c21183ea86d21055d;hpb=b385a968b6b2f2695cceafcba62abcb398f41bb2;p=model-checker.git diff --git a/action.h b/action.h index 86012c1..d0f02a3 100644 --- a/action.h +++ b/action.h @@ -24,12 +24,10 @@ using std::memory_order_acq_rel; using std::memory_order_seq_cst; /** Note that this value can be legitimately used by a program, and - hence by iteself does not indicate no value. */ - + * hence by iteself does not indicate no value. */ #define VALUE_NONE 0xdeadbeef /** A special value to represent a successful trylock */ - #define VALUE_TRYSUCCESS 1 /** A special value to represent a failed trylock */ @@ -81,9 +79,10 @@ public: void * get_location() const { return location; } modelclock_t get_seq_number() const { return seq_number; } uint64_t get_value() const { return value; } + void set_value(uint64_t v) { value = v; } const ModelAction * get_reads_from() const { return reads_from; } - Node * get_node() const { return node; } + Node * get_node() const; void set_node(Node *n) { node = n; } void set_read_from(const ModelAction *act); @@ -108,6 +107,7 @@ public: bool is_notify_one() const; bool is_success_lock() const; bool is_failed_trylock() const; + bool is_atomic_var() const; bool is_uninitialized() const; bool is_read() const; bool is_write() const; @@ -126,6 +126,8 @@ public: bool is_conflicting_lock(const ModelAction *act) const; bool could_synchronize_with(const ModelAction *act) const; + Thread * get_thread_operand() const; + void create_cv(const ModelAction *parent = NULL); ClockVector * get_cv() const { return cv; } bool synchronize_with(const ModelAction *act);