Support for -x option
[model-checker.git] / model.cc
index 16d5db4ab280262d1c4439de6544a413f8ba794e..e7c48ed90beb35b75637263bee25ed95f054cdd9 100644 (file)
--- a/model.cc
+++ b/model.cc
@@ -241,7 +241,8 @@ void ModelChecker::print_stats() const
        model_print("Number of buggy executions: %d\n", stats.num_buggy_executions);
        model_print("Number of infeasible executions: %d\n", stats.num_infeasible);
        model_print("Total executions: %d\n", stats.num_total);
-       model_print("Total nodes created: %d\n", node_stack->get_total_nodes());
+       if (params.verbose)
+               model_print("Total nodes created: %d\n", node_stack->get_total_nodes());
 }
 
 /**
@@ -254,7 +255,7 @@ void ModelChecker::print_execution(bool printbugs) const
                        get_execution_number());
        print_program_output();
 
-       if (params.verbose >= 2) {
+       if (params.verbose >= 3) {
                model_print("\nEarliest divergence point since last feasible execution:\n");
                if (earliest_diverge)
                        earliest_diverge->print();
@@ -302,7 +303,7 @@ bool ModelChecker::next_execution()
        record_stats();
 
        /* Output */
-       if (params.verbose || (complete && execution->have_bug_reports()))
+       if ( (complete && params.verbose) || params.verbose>1 || (complete && execution->have_bug_reports()))
                print_execution(complete);
        else
                clear_program_output();
@@ -320,6 +321,9 @@ bool ModelChecker::next_execution()
 
        execution_number++;
 
+       if (params.maxexecutions != 0 && stats.num_complete >= params.maxexecutions)
+               return false;
+
        reset_to_initial_state();
        return true;
 }
@@ -350,26 +354,6 @@ Thread * ModelChecker::get_thread(const ModelAction *act) const
        return execution->get_thread(act);
 }
 
-/**
- * @brief Check if a Thread is currently enabled
- * @param t The Thread to check
- * @return True if the Thread is currently enabled
- */
-bool ModelChecker::is_enabled(Thread *t) const
-{
-       return scheduler->is_enabled(t);
-}
-
-/**
- * @brief Check if a Thread is currently enabled
- * @param tid The ID of the Thread to check
- * @return True if the Thread is currently enabled
- */
-bool ModelChecker::is_enabled(thread_id_t tid) const
-{
-       return scheduler->is_enabled(tid);
-}
-
 /**
  * Switch from a model-checker context to a user-thread context. This is the
  * complement of ModelChecker::switch_to_master and must be called from the
@@ -458,7 +442,7 @@ void ModelChecker::run()
                        for (unsigned int i = 0; i < get_num_threads(); i++) {
                                Thread *th = get_thread(int_to_id(i));
                                ModelAction *act = th->get_pending();
-                               if (act && is_enabled(th) && !execution->check_action_enabled(act)) {
+                               if (act && execution->is_enabled(th) && !execution->check_action_enabled(act)) {
                                        scheduler->sleep(th);
                                }
                        }