X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6bc71102f9c6ad0e9bb98c6a8c08f3556b636d3d..873fe7743b2a9f2eddc53ed3383bdd74bb3fe226:/src/mc/mc_comm_determinism.cpp diff --git a/src/mc/mc_comm_determinism.cpp b/src/mc/mc_comm_determinism.cpp index 623365919e..7e7d2b1814 100644 --- a/src/mc/mc_comm_determinism.cpp +++ b/src/mc/mc_comm_determinism.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -18,16 +19,16 @@ #include "src/mc/mc_private.h" #include "src/mc/mc_record.h" #include "src/mc/mc_smx.h" -#include "src/mc/mc_client.h" +#include "src/mc/Client.hpp" #include "src/mc/mc_exit.h" using simgrid::mc::remote; -extern "C" { - XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_comm_determinism, mc, "Logging specific to MC communication determinism detection"); +extern "C" { + /********** Global variables **********/ xbt_dynar_t initial_communications_pattern; @@ -303,8 +304,7 @@ static void MC_pre_modelcheck_comm_determinism(void) int i; const int maxpid = MC_smx_get_maxpid(); - if (_sg_mc_visited > 0) - visited_states = xbt_dynar_new(sizeof(mc_visited_state_t), visited_state_free_voidp); + simgrid::mc::visited_states.clear(); // Create initial_communications_pattern elements: initial_communications_pattern = xbt_dynar_new(sizeof(mc_list_comm_pattern_t), MC_list_comm_pattern_free_voidp); @@ -331,7 +331,7 @@ static void MC_pre_modelcheck_comm_determinism(void) /* Get an enabled process and insert it in the interleave set of the initial state */ for (auto& p : mc_model_checker->process().simix_processes()) - if (MC_process_is_enabled(&p.copy)) + if (simgrid::mc::process_is_enabled(&p.copy)) MC_state_interleave_process(initial_state, &p.copy); xbt_fifo_unshift(mc_stack, initial_state); @@ -342,7 +342,7 @@ static int MC_modelcheck_comm_determinism_main(void) char *req_str = nullptr; int value; - mc_visited_state_t visited_state = nullptr; + std::unique_ptr visited_state = nullptr; smx_simcall_t req = nullptr; mc_state_t state = nullptr, next_state = NULL; @@ -363,12 +363,12 @@ static int MC_modelcheck_comm_determinism_main(void) && (req = MC_state_get_request(state, &value)) && (visited_state == nullptr)) { - req_str = MC_request_to_string(req, value, MC_REQUEST_SIMIX); + req_str = simgrid::mc::request_to_string(req, value, simgrid::mc::RequestType::simix); XBT_DEBUG("Execute: %s", req_str); xbt_free(req_str); if (dot_output != nullptr) - req_str = MC_request_get_dot_output(req, value); + req_str = simgrid::mc::request_get_dot_output(req, value); MC_state_set_executed_request(state, req, value); mc_stats->executed_transitions++; @@ -379,7 +379,7 @@ static int MC_modelcheck_comm_determinism_main(void) call = MC_get_call_type(req); /* Answer the request */ - MC_simcall_handle(req, value); /* After this call req is no longer useful */ + simgrid::mc::handle_simcall(req, value); /* After this call req is no longer useful */ if(!initial_global_state->initial_communications_pattern_done) MC_handle_comm_pattern(call, req, value, initial_communications_pattern, 0); @@ -392,11 +392,11 @@ static int MC_modelcheck_comm_determinism_main(void) /* Create the new expanded state */ next_state = MC_state_new(); - if ((visited_state = is_visited_state(next_state)) == nullptr) { + if ((visited_state = simgrid::mc::is_visited_state(next_state)) == nullptr) { /* Get enabled processes and insert them in the interleave set of the next state */ for (auto& p : mc_model_checker->process().simix_processes()) - if (MC_process_is_enabled(&p.copy)) + if (simgrid::mc::process_is_enabled(&p.copy)) MC_state_interleave_process(next_state, &p.copy); if (dot_output != nullptr) @@ -431,7 +431,7 @@ static int MC_modelcheck_comm_determinism_main(void) visited_state = nullptr; /* Check for deadlocks */ - if (MC_deadlock_check()) { + if (mc_model_checker->checkDeadlock()) { MC_show_deadlock(nullptr); return SIMGRID_MC_EXIT_DEADLOCK; } @@ -462,12 +462,11 @@ static int MC_modelcheck_comm_determinism_main(void) int MC_modelcheck_comm_determinism(void) { XBT_INFO("Check communication determinism"); - mc_reduce_kind = e_mc_reduce_none; mc_model_checker->wait_for_requests(); if (mc_mode == MC_MODE_CLIENT) // This will move somehwere else: - MC_client_handle_messages(); + simgrid::mc::Client::get()->handleMessages(); /* Create exploration stack */ mc_stack = xbt_fifo_new();