X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e3f2b0103f46b876785e374a2781ff7d48f8ec59..3bf8dd63803f44adc6ef0fd84474b515b5df960c:/src/mc/checker/CommunicationDeterminismChecker.cpp diff --git a/src/mc/checker/CommunicationDeterminismChecker.cpp b/src/mc/checker/CommunicationDeterminismChecker.cpp index 8310133eb4..f4795c7a77 100644 --- a/src/mc/checker/CommunicationDeterminismChecker.cpp +++ b/src/mc/checker/CommunicationDeterminismChecker.cpp @@ -97,25 +97,21 @@ static char* print_determinism_result(simgrid::mc::CommPatternDifference diff, i static void update_comm_pattern(simgrid::mc::PatternCommunication* comm_pattern, simgrid::mc::RemotePtr comm_addr) { - // // HACK, type punning - simgrid::mc::Remote temp_comm; - mc_model_checker->get_remote_simulation().read(temp_comm, comm_addr); - const simgrid::kernel::activity::CommImpl* comm = temp_comm.get_buffer(); - auto src_proc = mcapi::get().get_src_actor(comm_addr); auto dst_proc = mcapi::get().get_dst_actor(comm_addr); comm_pattern->src_proc = src_proc->get_pid(); comm_pattern->dst_proc = dst_proc->get_pid(); - comm_pattern->src_host = MC_smx_actor_get_host_name(src_proc); - comm_pattern->dst_host = MC_smx_actor_get_host_name(dst_proc); - - if (comm_pattern->data.empty() && comm->src_buff_ != nullptr) { - size_t buff_size; - mc_model_checker->get_remote_simulation().read(&buff_size, remote(comm->dst_buff_size_)); - comm_pattern->data.resize(buff_size); - mc_model_checker->get_remote_simulation().read_bytes(comm_pattern->data.data(), comm_pattern->data.size(), - remote(comm->src_buff_)); - } + comm_pattern->src_host = mcapi::get().get_actor_host_name(src_proc); + comm_pattern->dst_host = mcapi::get().get_actor_host_name(dst_proc); + + if (comm_pattern->data.empty()) { + auto pattern_data = mcapi::get().get_pattern_comm_data(comm_addr); + if (pattern_data.data() != nullptr) { + auto data_size = pattern_data.size(); + comm_pattern->data.resize(data_size); + memcpy(comm_pattern->data.data(), pattern_data.data(), data_size); + } + } } namespace simgrid { @@ -147,7 +143,7 @@ void CommunicationDeterminismChecker::deterministic_comm_pattern(int process, co XBT_INFO("%s", this->send_diff); xbt_free(this->send_diff); this->send_diff = nullptr; - mcapi::get().s_log_state(); + mcapi::get().log_state(); mcapi::get().mc_exit(SIMGRID_MC_EXIT_NON_DETERMINISM); } else if (_sg_mc_comms_determinism && (not this->send_deterministic && not this->recv_deterministic)) { XBT_INFO("****************************************************"); @@ -163,7 +159,7 @@ void CommunicationDeterminismChecker::deterministic_comm_pattern(int process, co xbt_free(this->recv_diff); this->recv_diff = nullptr; } - mcapi::get().s_log_state(); + mcapi::get().log_state(); mcapi::get().mc_exit(SIMGRID_MC_EXIT_NON_DETERMINISM); } } @@ -342,13 +338,13 @@ void CommunicationDeterminismChecker::restoreState() /* Intermediate backtracking */ State* last_state = stack_.back().get(); if (last_state->system_state_) { - last_state->system_state_->restore(&mcapi::get().mc_get_remote_simulation()); + mc_api::get().restore_state(last_state->system_state_); MC_restore_communications_pattern(last_state); return; } /* Restore the initial state */ - mcapi::get().s_restore_initial_state(); + mcapi::get().restore_initial_state(); unsigned n = mcapi::get().get_maxpid(); assert(n == incomplete_communications_pattern.size()); @@ -447,7 +443,7 @@ void CommunicationDeterminismChecker::real_run() if (visited_state == nullptr) { /* Get enabled actors and insert them in the interleave set of the next state */ - auto actors = mcapi::get().mc_get_remote_simulation().actors(); + auto actors = mcapi::get().get_actors(); for (auto& actor : actors) if (mcapi::get().actor_is_enabled(actor.copy.get_buffer()->get_pid())) next_state->add_interleaving_set(actor.copy.get_buffer()); @@ -503,7 +499,7 @@ void CommunicationDeterminismChecker::real_run() } } - mcapi::get().s_log_state(); + mcapi::get().log_state(); } void CommunicationDeterminismChecker::run()