X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=history.h;h=3bb615640eca3e86728675db2c366c508689d4d4;hb=de0692e808050b731ea282bbf5c314f2f74cdd7e;hp=179439ce44ad24d6a0fafc0d31689558de94820c;hpb=f186d74da258bf0a24b57b13a10b40641e09efd6;p=c11tester.git diff --git a/history.h b/history.h index 179439ce..3bb61564 100644 --- a/history.h +++ b/history.h @@ -1,39 +1,55 @@ +#ifndef __HISTORY_H__ +#define __HISTORY_H__ + #include "stl-model.h" #include "common.h" #include "hashtable.h" -#include "modeltypes.h" - -/* forward declaration */ -class ModelAction; - -typedef ModelList action_mlist_t; +#include "hashset.h" +#include "threads-model.h" class ModelHistory { public: ModelHistory(); + ~ModelHistory(); void enter_function(const uint32_t func_id, thread_id_t tid); void exit_function(const uint32_t func_id, thread_id_t tid); - uint32_t get_func_counter() { return func_id; } - void incr_func_counter() { func_id++; } + uint32_t get_func_counter() { return func_counter; } + void incr_func_counter() { func_counter++; } + + void resize_func_nodes(uint32_t max_func_id); + void process_action(ModelAction *act, thread_id_t tid); + + HashTable * getFuncMap() { return &func_map; } + ModelVector * getFuncMapRev() { return &func_map_rev; } - HashTable * getFuncMap() { return &func_map; } - HashTable * getFuncHistory() { return &func_history; } + ModelVector * getFuncNodes() { return &func_nodes; } + FuncNode * get_func_node(uint32_t func_id); +// uint64_t query_last_read(void * location, thread_id_t tid); + + void add_to_write_history(void * location, uint64_t write_val); + HashTable * getWriteHistory() { return &write_history; } + void add_to_loc_func_nodes_map(void * location, FuncNode * node); + + void set_new_exec_flag(); + void print_write(); + void print_func_node(); - void print(); MEMALLOC private: - uint32_t func_id; + uint32_t func_counter; /* map function names to integer ids */ - HashTable func_map; + HashTable func_map; - HashTable func_history; + /* map integer ids to function names */ + ModelVector func_map_rev; - /* work_list stores a list of function ids for each thread - * SnapList is intended to be used as a stack storing - * the functions that thread i has entered and yet to exit from - */ - HashTable *, uintptr_t, 4> work_list; + ModelVector func_nodes; + + HashTable write_history; + HashTable *, uintptr_t, 4> loc_func_nodes_map; }; + +#endif /* __HISTORY_H__ */