#include "hashtable.h"
#include "threads-model.h"
+#define INIT_SEQ_NUMBER 0xffffffff
+
class ModelHistory {
public:
ModelHistory();
void remove_waiting_thread(thread_id_t tid);
void stop_waiting_for_node(thread_id_t self_id, thread_id_t waiting_for_id, FuncNode * target_node);
- SnapVector<inst_act_map_t *> * getThrdInstActMap(uint32_t func_id);
-
void set_new_exec_flag();
void dump_func_node_graph();
void print_func_node();
MEMALLOC
private:
uint32_t func_counter;
+ modelclock_t last_seq_number;
/* Map function names to integer ids */
HashTable<const char *, uint32_t, uintptr_t, 4, model_malloc, model_calloc, model_free> func_map;
HashTable<void *, SnapVector<ConcretePredicate *> *, uintptr_t, 0> * loc_waiting_writes_map;
- /* The last action processed by ModelHistory */
- ModelAction * last_action;
-
/* thrd_func_list stores a list of function ids for each thread.
* Each element in thrd_func_list stores the functions that
* thread i has entered and yet to exit from
SnapVector<ConcretePredicate *> * thrd_waiting_write;
SnapVector<WaitObj *> * thrd_wait_obj;
- /* A run-time map from FuncInst to ModelAction per thread, per FuncNode.
- * Manipulated by FuncNode, and needed by NewFuzzer */
- HashTable<uint32_t, SnapVector<inst_act_map_t *> *, int, 0> * func_inst_act_maps;
-
bool skip_action(ModelAction * act);
void monitor_waiting_thread(uint32_t func_id, thread_id_t tid);
void monitor_waiting_thread_counter(thread_id_t tid);