main: change default future value sloppiness
[c11tester.git] / model.h
diff --git a/model.h b/model.h
index d0043a1f88b1990de8e0fcdee27e21baa387ccd7..6d702b0d94604d281a0cdea8331eb669e15a3704 100644 (file)
--- a/model.h
+++ b/model.h
@@ -37,6 +37,15 @@ struct model_params {
        unsigned int fairwindow;
        unsigned int enabledcount;
        unsigned int bound;
+
+       /** @brief Maximum number of future values that can be sent to the same
+        *  read */
+       int maxfuturevalues;
+
+       /** @brief Only generate a new future value/expiration pair if the
+        *  expiration time exceeds the existing one by more than the slop
+        *  value */
+       unsigned int expireslop;
 };
 
 struct PendingFutureValue {
@@ -89,7 +98,7 @@ public:
        Thread * get_thread(ModelAction *act) const;
 
        thread_id_t get_next_id();
-       unsigned int get_num_threads();
+       unsigned int get_num_threads() const;
        Thread * get_current_thread();
 
        int switch_to_master(ModelAction *act);
@@ -99,12 +108,14 @@ public:
        bool isfeasible();
        bool isfeasibleotherthanRMW();
        bool isfinalfeasible();
+       void check_promises_thread_disabled();
        void mo_check_promises(thread_id_t tid, const ModelAction *write);
        void check_promises(thread_id_t tid, ClockVector *old_cv, ClockVector * merge_cv);
        void get_release_seq_heads(ModelAction *act, rel_heads_list_t *release_heads);
        void finish_execution();
        bool isfeasibleprefix();
        void set_assert() {asserted=true;}
+       bool is_deadlocked() const;
 
        /** @brief Alert the model-checker that an incorrectly-ordered
         * synchronization was made */
@@ -139,7 +150,7 @@ private:
         */
        void set_current_action(ModelAction *act) { priv->current_action = act; }
        Thread * check_current_action(ModelAction *curr);
-       ModelAction * initialize_curr_action(ModelAction *curr);
+       bool initialize_curr_action(ModelAction **curr);
        bool process_read(ModelAction *curr, bool second_part_of_rmw);
        bool process_write(ModelAction *curr);
        bool process_mutex(ModelAction *curr);