X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a919469a2cba34e8d082b652f03b33182d27fa5d..4b6daec896cfa8220c801d9c7dcf2af7eedcbff0:/src/mc/mc_global.c diff --git a/src/mc/mc_global.c b/src/mc/mc_global.c index 203b7aa8c7..839c96b135 100644 --- a/src/mc/mc_global.c +++ b/src/mc/mc_global.c @@ -15,6 +15,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_global, mc, mc_snapshot_t initial_snapshot = NULL; xbt_fifo_t mc_stack = NULL; mc_stats_t mc_stats = NULL; +mc_stats_pair_t mc_stats_pair = NULL; mc_state_t mc_current_state = NULL; char mc_replay_mode = FALSE; double *mc_time = NULL; @@ -54,16 +55,20 @@ void MC_init(void) } void MC_init_with_automaton(xbt_automaton_t a){ + + XBT_DEBUG("Start init mc"); mc_time = xbt_new0(double, simix_process_maxpid); /* Initialize the data structures that must be persistent across every iteration of the model-checker (in RAW memory) */ + MC_SET_RAW_MEM; /* Initialize statistics */ + mc_stats_pair = xbt_new0(s_mc_stats_pair_t, 1); mc_stats = xbt_new0(s_mc_stats_t, 1); - mc_stats->state_size = 1; + //mc_stats_pair->pair_size = 1; XBT_DEBUG("Creating snapshot_stack"); @@ -72,7 +77,9 @@ void MC_init_with_automaton(xbt_automaton_t a){ MC_UNSET_RAW_MEM; - MC_dfs_init(a); + //MC_vddfs_with_restore_snapshot_init(a); + //MC_ddfs_with_restore_snapshot_init(a); + MC_dpor2_init(a); } @@ -85,7 +92,14 @@ void MC_modelcheck(void) void MC_modelcheck_with_automaton(xbt_automaton_t a){ MC_init_with_automaton(a); - MC_exit(); + MC_exit_with_automaton(); +} + +void MC_exit_with_automaton(void) +{ + MC_print_statistics_pairs(mc_stats_pair); + xbt_free(mc_time); + MC_memory_exit(); } void MC_exit(void) @@ -252,6 +266,17 @@ void MC_print_statistics(mc_stats_t stats) (double)stats->expanded_states / stats->state_size); */ } +void MC_print_statistics_pairs(mc_stats_pair_t stats) +{ + XBT_INFO("Expanded pairs = %lu", stats->expanded_pairs); + XBT_INFO("Visited pairs = %lu", stats->visited_pairs); + //XBT_INFO("Executed transitions = %lu", stats->executed_transitions); + XBT_INFO("Expanded / Visited = %lf", + (double) stats->visited_pairs / stats->expanded_pairs); + /*XBT_INFO("Exploration coverage = %lf", + (double)stats->expanded_states / stats->state_size); */ +} + void MC_assert(int prop) { if (MC_IS_ENABLED && !prop) { @@ -265,6 +290,19 @@ void MC_assert(int prop) } } +void MC_assert_pair(int prop){ + if (MC_IS_ENABLED && !prop) { + XBT_INFO("**************************"); + XBT_INFO("*** PROPERTY NOT VALID ***"); + XBT_INFO("**************************"); + //XBT_INFO("Counter-example execution trace:"); + MC_show_snapshot_stack(mc_snapshot_stack); + //MC_dump_snapshot_stack(mc_snapshot_stack); + MC_print_statistics_pairs(mc_stats_pair); + xbt_abort(); + } +} + void MC_process_clock_add(smx_process_t process, double amount) { mc_time[process->pid] += amount;