X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/20725839bfdac54bf58497e0c34705ba37f19265..3622fe8cec33d2c4393be5ff35e6338d8e44472d:/src/mc/mc_record.cpp diff --git a/src/mc/mc_record.cpp b/src/mc/mc_record.cpp index 9ac3ecb536..32702eb70c 100644 --- a/src/mc/mc_record.cpp +++ b/src/mc/mc_record.cpp @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -20,23 +21,24 @@ #include "src/mc/mc_record.h" #include "src/mc/mc_base.h" -#ifdef HAVE_MC +#if HAVE_MC +#include "src/mc/mc_request.h" #include "src/mc/mc_private.h" #include "src/mc/mc_state.h" #include "src/mc/mc_smx.h" -#include "src/mc/mc_liveness.h" +#include "src/mc/LivenessChecker.hpp" #endif -extern "C" { - XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_record, mc, " Logging specific to MC record/replay facility"); +extern "C" { + char* MC_record_path = nullptr; void MC_record_replay(mc_record_item_t start, std::size_t len) { - MC_wait_for_requests(); + simgrid::mc::wait_for_requests(); mc_record_item_t end = start + len; // Choose the recorded simcall and execute it: @@ -55,12 +57,13 @@ void MC_record_replay(mc_record_item_t start, std::size_t len) smx_simcall_t simcall = &(process->simcall); if(!simcall || simcall->call == SIMCALL_NONE) xbt_die("No simcall for this process."); - if (!MC_request_is_visible(simcall) || !MC_request_is_enabled(simcall)) + if (!simgrid::mc::request_is_visible(simcall) + || !simgrid::mc::request_is_enabled(simcall)) xbt_die("Unexpected simcall."); // Execute the request: SIMIX_simcall_handle(simcall, item->value); - MC_wait_for_requests(); + simgrid::mc::wait_for_requests(); } } @@ -96,7 +99,7 @@ fail: return nullptr; } -#ifdef HAVE_MC +#if HAVE_MC static char* MC_record_stack_to_string_liveness(xbt_fifo_t stack) { char* buffer; @@ -106,7 +109,7 @@ static char* MC_record_stack_to_string_liveness(xbt_fifo_t stack) xbt_fifo_item_t item; xbt_fifo_item_t start = xbt_fifo_get_last_item(stack); for (item = start; item; item = xbt_fifo_get_prev_item(item)) { - mc_pair_t pair = (mc_pair_t) xbt_fifo_get_item_content(item); + simgrid::mc::Pair* pair = (simgrid::mc::Pair*) xbt_fifo_get_item_content(item); int value; smx_simcall_t req = MC_state_get_executed_request(pair->graph_state, &value); if (req && req->call != SIMCALL_NONE) { @@ -177,15 +180,12 @@ void MC_record_dump_path(xbt_fifo_t stack) void MC_record_replay_from_string(const char* path_string) { + simgrid::mc::processes_time.resize(simix_process_maxpid); xbt_dynar_t path = MC_record_from_string(path_string); mc_record_item_t start = &xbt_dynar_get_as(path, 0, s_mc_record_item_t); MC_record_replay(start, xbt_dynar_length(path)); xbt_dynar_free(&path); -} - -void MC_record_replay_init() -{ - mc_time = xbt_new0(double, simix_process_maxpid); + simgrid::mc::processes_time.clear(); } }