action: add is_atomic_var()
authorBrian Norris <banorris@uci.edu>
Fri, 7 Dec 2012 06:55:38 +0000 (22:55 -0800)
committerBrian Norris <banorris@uci.edu>
Fri, 7 Dec 2012 06:55:38 +0000 (22:55 -0800)
To check if a ModelAction is for a C/C++ atomic variable (vs. a Thread
action, a fake ModelChecker action, a mutex, a condition variable, etc.)

action.cc
action.h

index d418bdbb6a18ff1e3246b26ef5e8371ecde285b9..a313b70fbe970810c96fe16bc1d7a0a27108508b 100644 (file)
--- a/action.cc
+++ b/action.cc
@@ -124,6 +124,12 @@ bool ModelAction::is_failed_trylock() const
        return (type == ATOMIC_TRYLOCK && value == VALUE_TRYFAILED);
 }
 
+/** @return True if this operation is performed on a C/C++ atomic variable */
+bool ModelAction::is_atomic_var() const
+{
+       return is_read() || could_be_write();
+}
+
 bool ModelAction::is_uninitialized() const
 {
        return type == ATOMIC_UNINIT;
index 8a8e33e363c5a2d45f538d162447e7bbff30f6e7..a246123c259d002d04eb14b1b0a4d63048e12fb6 100644 (file)
--- a/action.h
+++ b/action.h
@@ -108,6 +108,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;