#include "modeltypes.h"
class ClockVector;
+class Thread;
using std::memory_order;
using std::memory_order_relaxed;
*/
class ModelAction {
public:
- ModelAction(action_type_t type, memory_order order, void *loc, uint64_t value = VALUE_NONE);
+ ModelAction(action_type_t type, memory_order order, void *loc, uint64_t value = VALUE_NONE, Thread *thread = NULL);
~ModelAction();
void print() const;
void process_rmw(ModelAction * act);
void copy_typeandorder(ModelAction * act);
+ void set_sleep_flag() { sleep_flag=true; }
+ bool get_sleep_flag() { return sleep_flag; }
+ unsigned int hash() const;
+
MEMALLOC
private:
/** The clock vector stored with this action; only needed if this
* action is a store release? */
ClockVector *cv;
+
+ bool sleep_flag;
};
-typedef std::list<ModelAction *> action_list_t;
+typedef std::list< ModelAction *, SnapshotAlloc<ModelAction *> > action_list_t;
#endif /* __ACTION_H__ */