projects
/
c11tester.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update readme
[c11tester.git]
/
execution.h
diff --git
a/execution.h
b/execution.h
index 0c401b19b59084609a2fe12b1cbb565a736cfbac..5e80e186e01d95677c11e46d677d437a87b60386 100644
(file)
--- a/
execution.h
+++ b/
execution.h
@@
-19,6
+19,9
@@
#include <condition_variable>
#include "classlist.h"
#include <condition_variable>
#include "classlist.h"
+#define INITIAL_THREAD_ID 0
+#define MAIN_THREAD_ID 1
+
struct PendingFutureValue {
PendingFutureValue(ModelAction *writer, ModelAction *reader) :
writer(writer), reader(reader)
struct PendingFutureValue {
PendingFutureValue(ModelAction *writer, ModelAction *reader) :
writer(writer), reader(reader)
@@
-27,6
+30,10
@@
struct PendingFutureValue {
ModelAction *reader;
};
ModelAction *reader;
};
+#ifdef COLLECT_STAT
+void print_atomic_accesses();
+#endif
+
/** @brief The central structure for model-checking */
class ModelExecution {
public:
/** @brief The central structure for model-checking */
class ModelExecution {
public:
@@
-95,9
+102,8
@@
public:
SNAPSHOTALLOC
private:
int get_execution_number() const;
SNAPSHOTALLOC
private:
int get_execution_number() const;
- bool mo_may_allow(const ModelAction *writer, const ModelAction *reader);
- bool should_wake_up(const ModelAction *curr, const Thread *thread) const;
- void wake_up_sleeping_actions(ModelAction *curr);
+ bool should_wake_up(const ModelAction * asleep) const;
+ void wake_up_sleeping_actions();
modelclock_t get_next_seq_num();
bool next_execution();
bool initialize_curr_action(ModelAction **curr);
modelclock_t get_next_seq_num();
bool next_execution();
bool initialize_curr_action(ModelAction **curr);
@@
-117,7
+123,7
@@
private:
ModelAction * get_last_unlock(ModelAction *curr) const;
SnapVector<ModelAction *> * build_may_read_from(ModelAction *curr);
ModelAction * process_rmw(ModelAction *curr);
ModelAction * get_last_unlock(ModelAction *curr) const;
SnapVector<ModelAction *> * build_may_read_from(ModelAction *curr);
ModelAction * process_rmw(ModelAction *curr);
- bool r_modification_order(ModelAction *curr, const ModelAction *rf, SnapVector<ModelAction *> *priorset, bool *canprune
, bool check_only = false
);
+ bool r_modification_order(ModelAction *curr, const ModelAction *rf, SnapVector<ModelAction *> *priorset, bool *canprune);
void w_modification_order(ModelAction *curr);
ClockVector * get_hb_from_write(ModelAction *rf) const;
ModelAction * convertNonAtomicStore(void*);
void w_modification_order(ModelAction *curr);
ClockVector * get_hb_from_write(ModelAction *rf) const;
ModelAction * convertNonAtomicStore(void*);
@@
-146,7
+152,7
@@
private:
* to a trace of all actions performed on the object.
* Used only for SC fences, unlocks, & wait.
*/
* to a trace of all actions performed on the object.
* Used only for SC fences, unlocks, & wait.
*/
- HashTable<const void *, action_list_t *, uintptr_t, 2> obj_map;
+ HashTable<const void *,
simple_
action_list_t *, uintptr_t, 2> obj_map;
/** Per-object list of actions. Maps an object (i.e., memory location)
* to a trace of all actions performed on the object. */
/** Per-object list of actions. Maps an object (i.e., memory location)
* to a trace of all actions performed on the object. */
@@
-156,7
+162,7
@@
private:
HashTable<const void *, SnapVector<action_list_t> *, uintptr_t, 2> obj_thrd_map;
/** Per-object list of writes that each thread performed. */
HashTable<const void *, SnapVector<action_list_t> *, uintptr_t, 2> obj_thrd_map;
/** Per-object list of writes that each thread performed. */
- HashTable<const void *, SnapVector<action_list_t> *, uintptr_t, 2> obj_wr_thrd_map;
+ HashTable<const void *, SnapVector<
simple_
action_list_t> *, uintptr_t, 2> obj_wr_thrd_map;
HashTable<const void *, ModelAction *, uintptr_t, 4> obj_last_sc_map;
HashTable<const void *, ModelAction *, uintptr_t, 4> obj_last_sc_map;