3 * @brief Promise class --- tracks future obligations for execution
4 * related to weakly ordered writes.
11 #include "threads-model.h"
14 #include "modeltypes.h"
18 modelclock_t expiration;
23 Promise(ModelAction *act, uint64_t value, modelclock_t expiration) :
24 value(value), expiration(expiration), read(act), write(NULL)
26 increment_threads(act->get_tid());
28 modelclock_t get_expiration() const { return expiration; }
29 ModelAction * get_action() const { return read; }
30 bool increment_threads(thread_id_t tid);
32 bool has_sync_thread(thread_id_t tid) {
33 unsigned int id = id_to_int(tid);
34 if (id >= synced_thread.size())
36 return synced_thread[id];
39 bool check_promise() const;
40 uint64_t get_value() const { return value; }
41 void set_write(const ModelAction *act) { write = act; }
42 const ModelAction * get_write() { return write; }
46 std::vector<bool> synced_thread;
48 const modelclock_t expiration;
49 ModelAction * const read;
50 const ModelAction *write;