X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=model.h;h=5f389c5b9d245d359434772240e7212a27c7c8ba;hp=f92c8bdf75679b1cd8b9c0915f210e1d6f667b23;hb=9bbc3203ea6079d4222167e6b01cec9d041d08d9;hpb=f87fd6394adc4f85b8f3ff1d0695fd6ea2093e4e diff --git a/model.h b/model.h index f92c8bdf..5f389c5b 100644 --- a/model.h +++ b/model.h @@ -50,6 +50,12 @@ struct model_params { /** @brief Verbosity (0 = quiet; 1 = noisy) */ int verbose; + + /** @brief Command-line argument count to pass to user program */ + int argc; + + /** @brief Command-line arguments to pass to user program */ + char **argv; }; /** @brief Model checker execution stats */ @@ -85,6 +91,8 @@ public: ModelChecker(struct model_params params); ~ModelChecker(); + void run(); + /** @returns the context for the main model-checking system thread */ ucontext_t * get_system_context() { return &system_context; } @@ -126,9 +134,7 @@ public: bool is_complete_execution() const; void print_stats() const; - /** @brief Alert the model-checker that an incorrectly-ordered - * synchronization was made */ - void set_bad_synchronization() { bad_synchronization = true; } + void set_bad_synchronization(); const model_params params; Node * get_curr_node(); @@ -141,9 +147,8 @@ private: bool sleep_can_read_from(ModelAction * curr, const ModelAction *write); bool thin_air_constraint_may_allow(const ModelAction * writer, const ModelAction *reader); bool mo_may_allow(const ModelAction * writer, const ModelAction *reader); - bool has_asserted() {return asserted;} - void reset_asserted() { asserted = false; } - void set_assert() { asserted = true; } + bool has_asserted() const; + void set_assert(); bool promises_expired() const; void execute_sleep_set(); void wake_up_sleeping_actions(ModelAction * curr); @@ -241,11 +246,6 @@ private: * b. */ CycleGraph *mo_graph; - bool failed_promise; - bool too_many_reads; - bool asserted; - /** @brief Incorrectly-ordered synchronization was made */ - bool bad_synchronization; /** @brief The cumulative execution stats */ struct execution_stats stats; @@ -254,6 +254,8 @@ private: bool have_bug_reports() const; void print_bugs() const; void print_execution(bool printbugs) const; + + friend void user_main_wrapper(); }; extern ModelChecker *model;