bool ModelAction::is_read() const
{
- return type == ATOMIC_READ || type == ATOMIC_RMW;
+ return type == ATOMIC_READ || type == ATOMIC_RMWR || type == ATOMIC_RMW;
}
bool ModelAction::is_write() const
return type == ATOMIC_WRITE || type == ATOMIC_RMW || type == ATOMIC_INIT;
}
+bool ModelAction::is_rmwr() const
+{
+ return type == ATOMIC_RMWR;
+}
+
bool ModelAction::is_rmw() const
{
return type == ATOMIC_RMW;
}
+bool ModelAction::is_rmwc() const
+{
+ return type == ATOMIC_RMWC;
+}
+
bool ModelAction::is_initialization() const
{
return type == ATOMIC_INIT;
case ATOMIC_RMW:
type_str = "atomic rmw";
break;
+ case ATOMIC_RMWR:
+ type_str = "atomic rmwr";
+ break;
+ case ATOMIC_RMWC:
+ type_str = "atomic rmwc";
+ break;
case ATOMIC_INIT:
type_str = "init atomic";
break;
THREAD_JOIN, /**< A thread join action */
ATOMIC_READ, /**< An atomic read action */
ATOMIC_WRITE, /**< An atomic write action */
- ATOMIC_RMW, /**< An atomic read-modify-write action */
+ ATOMIC_RMWR, /**< The read of an atomic read-modify-write action */
+ ATOMIC_RMW, /**< The write of an atomic read-modify-write action */
+ ATOMIC_RMWC, /**< Terminate an atomic read-modify-write action w/o write */
ATOMIC_INIT /**< Initialization of an atomic object (e.g.,
* atomic_init()) */
} action_type_t;
bool is_read() const;
bool is_write() const;
+ bool is_rmwr() const;
+ bool is_rmwc() const;
bool is_rmw() const;
bool is_initialization() const;
bool is_acquire() const;