X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=inline;f=model.h;h=6e7f2244c66999c85a76f00f91d024f3dc6593f5;hb=44118f596eb7cd9b4b0b5037fbbf958db001accc;hp=6d702b0d94604d281a0cdea8331eb669e15a3704;hpb=c8984fcea4482e03e6863322b14ef823aa62650a;p=model-checker.git diff --git a/model.h b/model.h index 6d702b0..6e7f224 100644 --- a/model.h +++ b/model.h @@ -23,6 +23,7 @@ class CycleGraph; class Promise; class Scheduler; class Thread; +struct model_snapshot_members; /** @brief Shorthand for a list of release sequence heads */ typedef std::vector< const ModelAction *, ModelAlloc > rel_heads_list_t; @@ -50,18 +51,7 @@ struct model_params { struct PendingFutureValue { ModelAction *writer; - ModelAction * act; -}; - -/** - * Structure for holding small ModelChecker members that should be snapshotted - */ -struct model_snapshot_members { - ModelAction *current_action; - unsigned int next_thread_id; - modelclock_t used_sequence_numbers; - Thread *nextThread; - ModelAction *next_backtrack; + ModelAction *act; }; /** @brief Records information regarding a single pending release sequence */ @@ -97,6 +87,9 @@ public: Thread * get_thread(thread_id_t tid) const; Thread * get_thread(ModelAction *act) const; + bool is_enabled(Thread *t) const; + bool is_enabled(thread_id_t tid) const; + thread_id_t get_next_id(); unsigned int get_num_threads() const; Thread * get_current_thread(); @@ -122,7 +115,6 @@ public: void set_bad_synchronization() { bad_synchronization = true; } const model_params params; - Scheduler * get_scheduler() { return scheduler;} Node * get_curr_node(); MEMALLOC @@ -142,13 +134,7 @@ private: void wake_up_sleeping_actions(ModelAction * curr); modelclock_t get_next_seq_num(); - /** - * Stores the ModelAction for the current thread action. Call this - * immediately before switching from user- to system-context to pass - * data between them. - * @param act The ModelAction created by the user-thread action - */ - void set_current_action(ModelAction *act) { priv->current_action = act; } + void set_current_action(ModelAction *act); Thread * check_current_action(ModelAction *curr); bool initialize_curr_action(ModelAction **curr); bool process_read(ModelAction *curr, bool second_part_of_rmw);