X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=history.h;h=4795eb53e4cae374027cccf6592eb68549dbc0f4;hp=803077693e6ef8edab7ddd0f2552a1e341502708;hb=c0c4fcf47d8209da26e686b308d8c20ffc8220d3;hpb=dc255d1dd25f734bc6b1aae2f39418381c0823b5 diff --git a/history.h b/history.h index 80307769..4795eb53 100644 --- a/history.h +++ b/history.h @@ -28,7 +28,7 @@ public: FuncNode * get_curr_func_node(thread_id_t tid); void update_write_history(void * location, uint64_t write_val); - HashTable * getWriteHistory() { return write_history; } + HashTable * getWriteHistory() { return write_history; } void update_loc_rd_func_nodes_map(void * location, FuncNode * node); void update_loc_wr_func_nodes_map(void * location, FuncNode * node); SnapVector * getRdFuncNodes(void * location); @@ -40,8 +40,9 @@ public: SnapVector * getThrdWaitingWrite() { return thrd_waiting_write; } WaitObj * getWaitObj(thread_id_t tid); - void add_waiting_thread(thread_id_t self_id, thread_id_t waiting_for_id, int dist); - void remove_waiting_thread(thread_id_t self_id, thread_id_t waiting_for_id); + void add_waiting_thread(thread_id_t self_id, thread_id_t waiting_for_id, FuncNode * target_node, int dist); + 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 * getThrdInstActMap(uint32_t func_id); @@ -63,7 +64,7 @@ private: ModelVector func_nodes; /* Map a location to a set of values that have been written to it */ - HashTable * write_history; + HashTable * write_history; /* Map a location to FuncNodes that may read from it */ HashTable *, uintptr_t, 0> * loc_rd_func_nodes_map; @@ -76,11 +77,13 @@ private: SnapVector * thrd_waiting_write; SnapVector * thrd_wait_obj; - /* A run-time map from FuncInst to ModelAction per each thread, per each FuncNode. + /* A run-time map from FuncInst to ModelAction per thread, per FuncNode. * Manipulated by FuncNode, and needed by NewFuzzer */ HashTable *, int, 0> * func_inst_act_maps; bool skip_action(ModelAction * act, SnapList * curr_act_list); + void monitor_waiting_thread(uint32_t func_id, thread_id_t tid); + void monitor_waiting_thread_counter(thread_id_t tid); }; #endif /* __HISTORY_H__ */