action: add is_atomic_var()
[model-checker.git] / action.h
index 4c40bd9bf9a4554ed7c984158334f359346031c5..a246123c259d002d04eb14b1b0a4d63048e12fb6 100644 (file)
--- a/action.h
+++ b/action.h
@@ -45,6 +45,7 @@ typedef enum action_type {
        THREAD_YIELD,         /**< A thread yield action */
        THREAD_JOIN,          /**< A thread join action */
        THREAD_FINISH,        /**< A thread completion action */
+       ATOMIC_UNINIT,        /**< Represents an uninitialized atomic */
        ATOMIC_READ,          /**< An atomic read action */
        ATOMIC_WRITE,         /**< An atomic write action */
        ATOMIC_RMWR,          /**< The read part of an atomic RMW action */
@@ -82,9 +83,11 @@ public:
        uint64_t get_value() const { return value; }
        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);
+
        /** Store the most recent fence-release from the same thread
         *  @param fence The fence-release that occured prior to this */
        void set_last_fence_release(const ModelAction *fence) { last_fence_release = fence; }
@@ -94,6 +97,7 @@ public:
        void copy_from_new(ModelAction *newaction);
        void set_seq_number(modelclock_t num);
        void set_try_lock(bool obtainedlock);
+       bool is_thread_start() const;
        bool is_relseq_fixup() const;
        bool is_mutex_op() const;
        bool is_lock() const;
@@ -104,6 +108,8 @@ 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;
        bool could_be_write() const;
@@ -123,7 +129,6 @@ public:
 
        void create_cv(const ModelAction *parent = NULL);
        ClockVector * get_cv() const { return cv; }
-       bool read_from(const ModelAction *act);
        bool synchronize_with(const ModelAction *act);
 
        bool has_synchronized_with(const ModelAction *act) const;