X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=model.h;h=23c42ebb199a6ce30b5859b80ca8d5537038d0a3;hb=081ec029e06a68012f1a3fd119671148bfac9605;hp=d6d6f090392b788b34df5dc91bd6cfcd9cf17079;hpb=f8bac60ca108ab3d7729c0254ff80819e6d8c121;p=model-checker.git diff --git a/model.h b/model.h index d6d6f09..23c42eb 100644 --- a/model.h +++ b/model.h @@ -10,7 +10,6 @@ #include #include -#include "schedule.h" #include "mymemory.h" #include "libthreads.h" #include "threads.h" @@ -24,9 +23,10 @@ class NodeStack; class CycleGraph; class Promise; +class Scheduler; /** @brief Shorthand for a list of release sequence heads */ -typedef std::vector< const ModelAction *, MyAlloc > rel_heads_list_t; +typedef std::vector< const ModelAction *, ModelAlloc > rel_heads_list_t; /** * Model checker parameter structure. Holds run-time configuration options for @@ -73,14 +73,12 @@ public: void add_thread(Thread *t); void remove_thread(Thread *t); - Thread * get_thread(thread_id_t tid) { return thread_map->get(id_to_int(tid)); } - Thread * get_thread(ModelAction *act) { return get_thread(act->get_tid()); } + Thread * get_thread(thread_id_t tid); + Thread * get_thread(ModelAction *act); thread_id_t get_next_id(); int get_num_threads(); - - /** @return The currently executing Thread. */ - Thread * get_current_thread() { return scheduler->get_current_thread(); } + Thread * get_current_thread(); int switch_to_master(ModelAction *act); ClockVector * get_cv(thread_id_t tid); @@ -153,6 +151,7 @@ private: bool w_modification_order(ModelAction *curr); bool release_seq_head(const ModelAction *rf, rel_heads_list_t *release_heads) const; bool resolve_release_sequences(void *location, work_queue_t *work_queue); + void do_complete_join(ModelAction *join); ModelAction *diverge; ModelAction *earliest_diverge;