X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e3f2b0103f46b876785e374a2781ff7d48f8ec59..9f9eacbd59910b9bce3a39e41ce1d966f9a60c4c:/src/mc/checker/CommunicationDeterminismChecker.cpp diff --git a/src/mc/checker/CommunicationDeterminismChecker.cpp b/src/mc/checker/CommunicationDeterminismChecker.cpp index 8310133eb4..42e0f62613 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); } } @@ -174,7 +170,7 @@ void CommunicationDeterminismChecker::deterministic_comm_pattern(int process, co void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, CallType call_type, int backtracking) { - const smx_actor_t issuer = mcapi::get().mc_smx_simcall_get_issuer(request); + const smx_actor_t issuer = mcapi::get().simcall_get_issuer(request); const mc::PatternCommunicationList& initial_pattern = initial_communications_pattern[issuer->get_pid()]; const std::vector& incomplete_pattern = incomplete_communications_pattern[issuer->get_pid()]; @@ -184,7 +180,7 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca if (call_type == CallType::SEND) { /* Create comm pattern */ pattern->type = PatternCommunicationType::send; - pattern->comm_addr = mcapi::get().get_pattern_comm_addr(request); + pattern->comm_addr = mcapi::get().get_comm_isend_raw_addr(request); pattern->rdv = mcapi::get().get_pattern_comm_rdv(pattern->comm_addr); pattern->src_proc = mcapi::get().get_pattern_comm_src_proc(pattern->comm_addr); pattern->src_host = mc_api::get().get_actor_host_name(issuer); @@ -215,7 +211,7 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca #endif } else if (call_type == CallType::RECV) { pattern->type = PatternCommunicationType::receive; - pattern->comm_addr = mcapi::get().get_pattern_comm_addr(request); + pattern->comm_addr = mcapi::get().get_comm_isend_raw_addr(request); #if HAVE_SMPI pattern->tag = mcapi::get().get_smpi_request_tag(request, simgrid::simix::Simcall::COMM_IRECV); @@ -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()); @@ -370,7 +366,7 @@ void CommunicationDeterminismChecker::restoreState() /* because we got a copy of the executed request, we have to fetch the real one, pointed by the request field of the issuer process */ - const smx_actor_t issuer = mcapi::get().mc_smx_simcall_get_issuer(saved_req); + const smx_actor_t issuer = mcapi::get().simcall_get_issuer(saved_req); smx_simcall_t req = &issuer->simcall_; /* TODO : handle test and testany simcalls */ @@ -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()