model: THREAD_FINISH triggers release sequence check
[model-checker.git] / model.h
diff --git a/model.h b/model.h
index 073b96b976cd4807c45c8c5e6ffef415941a0a81..d6d6f090392b788b34df5dc91bd6cfcd9cf17079 100644 (file)
--- a/model.h
+++ b/model.h
@@ -18,6 +18,7 @@
 #include "clockvector.h"
 #include "hashtable.h"
 #include "workqueue.h"
+#include "config.h"
 
 /* Forward declaration */
 class NodeStack;
@@ -66,6 +67,9 @@ public:
 
        /** Prints an execution summary with trace information. */
        void print_summary();
+#if SUPPORT_MOD_ORDER_DUMP
+       void dumpGraph(char *filename);
+#endif
 
        void add_thread(Thread *t);
        void remove_thread(Thread *t);
@@ -74,7 +78,6 @@ public:
 
        thread_id_t get_next_id();
        int get_num_threads();
-       modelclock_t get_next_seq_num();
 
        /** @return The currently executing Thread. */
        Thread * get_current_thread() { return scheduler->get_current_thread(); }
@@ -110,6 +113,8 @@ private:
        int num_feasible_executions;
        bool promises_expired();
 
+       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
@@ -148,7 +153,6 @@ 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;