/** @brief Represents an action type, identifying one of several types of
* ModelAction */
typedef enum action_type {
/** @brief Represents an action type, identifying one of several types of
* ModelAction */
typedef enum action_type {
THREAD_CREATE, /**< A thread creation action */
THREAD_START, /**< First action in each thread */
THREAD_YIELD, /**< A thread yield action */
THREAD_CREATE, /**< A thread creation action */
THREAD_START, /**< First action in each thread */
THREAD_YIELD, /**< A thread yield action */
THREAD_FINISH, /**< A thread completion action */
PTHREAD_CREATE, /**< A pthread creation action */
PTHREAD_JOIN, /**< A pthread join action */
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 */
ATOMIC_UNINIT, /**< Represents an uninitialized atomic */
ATOMIC_READ, /**< An atomic read action */
ATOMIC_WRITE, /**< An atomic write action */
ATOMIC_NOTIFY_ONE, /**< A notify_one action */
ATOMIC_NOTIFY_ALL, /**< A notify all action */
ATOMIC_WAIT, /**< A wait action */
ATOMIC_NOTIFY_ONE, /**< A notify_one action */
ATOMIC_NOTIFY_ALL, /**< A notify all action */
ATOMIC_WAIT, /**< A wait action */
uint64_t get_write_value() const;
uint64_t get_return_value() const;
const ModelAction * get_reads_from() const { return reads_from; }
uint64_t get_write_value() const;
uint64_t get_return_value() const;
const ModelAction * get_reads_from() const { return reads_from; }
/** Store the most recent fence-release from the same thread
* @param fence The fence-release that occured prior to this */
/** Store the most recent fence-release from the same thread
* @param fence The fence-release that occured prior to this */
void set_try_lock(bool obtainedlock);
bool is_thread_start() const;
bool is_thread_join() const;
void set_try_lock(bool obtainedlock);
bool is_thread_start() const;
bool is_thread_join() const;