X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=model.h;h=94483536cf4e7468346417c7d7ad87887ecaac9e;hb=refs%2Fheads%2Fmaster;hp=7d84f60112c5ef26b8c54cf9e139f016fc05df7b;hpb=a726f5f6e1e0731a0516be1e9e23397744734ef5;p=model-checker.git diff --git a/model.h b/model.h index 7d84f60..9448353 100644 --- a/model.h +++ b/model.h @@ -47,18 +47,25 @@ public: void run(); + /** Restart the model checker, intended for pluggins. */ + void restart(); + + /** Exit the model checker, intended for pluggins. */ + void exit_model_checker(); + + /** Check the exit_flag. */ + bool get_exit_flag() const { return exit_flag; } + /** @returns the context for the main model-checking system thread */ ucontext_t * get_system_context() { return &system_context; } - const ModelExecution * get_execution() const { return execution; } + ModelExecution * get_execution() const { return execution; } + + int get_execution_number() const { return execution_number; } Thread * get_thread(thread_id_t tid) const; Thread * get_thread(const ModelAction *act) const; - bool is_enabled(Thread *t) const; - bool is_enabled(thread_id_t tid) const; - - unsigned int get_num_threads() const; Thread * get_current_thread() const; void switch_from_master(Thread *thread); @@ -68,20 +75,24 @@ public: void assert_user_bug(const char *msg); const model_params params; - void add_trace_analysis(TraceAnalysis *a) { - trace_analyses.push_back(a); - } - - action_list_t * get_actions_on_obj(void * obj, thread_id_t tid); - ModelAction * get_last_action(thread_id_t tid) const; - + void add_trace_analysis(TraceAnalysis *a) { trace_analyses.push_back(a); } + void set_inspect_plugin(TraceAnalysis *a) { inspect_plugin=a; } MEMALLOC private: + /** Flag indicates whether to restart the model checker. */ + bool restart_flag; + /** Flag indicates whether to exit the model checker. */ + bool exit_flag; + /** The scheduler to use: tracks the running/ready Threads */ Scheduler * const scheduler; NodeStack * const node_stack; ModelExecution *execution; + int execution_number; + + unsigned int get_num_threads() const; + void execute_sleep_set(); bool next_execution(); @@ -98,6 +109,10 @@ private: ModelVector trace_analyses; + /** @bref Implement restart. */ + void do_restart(); + /** @bref Plugin that can inspect new actions. */ + TraceAnalysis *inspect_plugin; /** @brief The cumulative execution stats */ struct execution_stats stats; void record_stats();