From: eazimi Date: Thu, 28 Jan 2021 10:24:07 +0000 (+0100) Subject: simcall_get_issuer() implemented in Api class X-Git-Tag: v3.27~489 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/8b948ad73d2527220c1547bed8e323d7ba57f646 simcall_get_issuer() implemented in Api class --- diff --git a/src/mc/api.cpp b/src/mc/api.cpp index ac168db18a..8c3771ea75 100644 --- a/src/mc/api.cpp +++ b/src/mc/api.cpp @@ -465,14 +465,36 @@ void Api::mc_show_deadlock() const MC_show_deadlock(); } +/** Get the issuer of a simcall (`req->issuer`) + * + * In split-process mode, it does the black magic necessary to get an address + * of a (shallow) copy of the data structure the issuer SIMIX actor in the local + * address space. + * + * @param process the MCed process + * @param req the simcall (copied in the local process) + */ smx_actor_t Api::simcall_get_issuer(s_smx_simcall const* req) const { - return MC_smx_simcall_get_issuer(req); + xbt_assert(mc_model_checker != nullptr); + + // This is the address of the smx_actor in the MCed process: + auto address = simgrid::mc::remote(req->issuer_); + + // Lookup by address: + for (auto& actor : mc_model_checker->get_remote_simulation().actors()) + if (actor.address == address) + return actor.copy.get_buffer(); + for (auto& actor : mc_model_checker->get_remote_simulation().dead_actors()) + if (actor.address == address) + return actor.copy.get_buffer(); + + xbt_die("Issuer not found"); } long Api::simcall_get_actor_id(s_smx_simcall const* req) const { - return MC_smx_simcall_get_issuer(req)->get_pid(); + return simcall_get_issuer(req)->get_pid(); } smx_mailbox_t Api::simcall_get_mbox(smx_simcall_t const req) const @@ -595,7 +617,7 @@ std::string Api::request_to_string(smx_simcall_t req, int value, RequestType req const char* type = nullptr; char* args = nullptr; - smx_actor_t issuer = MC_smx_simcall_get_issuer(req); + smx_actor_t issuer = simcall_get_issuer(req); switch (req->call_) { case Simcall::COMM_ISEND: { @@ -765,7 +787,7 @@ std::string Api::request_to_string(smx_simcall_t req, int value, RequestType req std::string Api::request_get_dot_output(smx_simcall_t req, int value) const { - const smx_actor_t issuer = MC_smx_simcall_get_issuer(req); + const smx_actor_t issuer = simcall_get_issuer(req); const char* color = get_color(issuer->get_pid() - 1); if (req->inspector_ != nullptr) diff --git a/src/mc/mc_smx.cpp b/src/mc/mc_smx.cpp index b61c444a83..9cca339e91 100644 --- a/src/mc/mc_smx.cpp +++ b/src/mc/mc_smx.cpp @@ -87,33 +87,6 @@ void RemoteSimulation::refresh_simix() } } -/** Get the issuer of a simcall (`req->issuer`) - * - * In split-process mode, it does the black magic necessary to get an address - * of a (shallow) copy of the data structure the issuer SIMIX actor in the local - * address space. - * - * @param process the MCed process - * @param req the simcall (copied in the local process) - */ -smx_actor_t MC_smx_simcall_get_issuer(s_smx_simcall const* req) -{ - xbt_assert(mc_model_checker != nullptr); - - // This is the address of the smx_actor in the MCed process: - auto address = simgrid::mc::remote(req->issuer_); - - // Lookup by address: - for (auto& actor : mc_model_checker->get_remote_simulation().actors()) - if (actor.address == address) - return actor.copy.get_buffer(); - for (auto& actor : mc_model_checker->get_remote_simulation().dead_actors()) - if (actor.address == address) - return actor.copy.get_buffer(); - - xbt_die("Issuer not found"); -} - const char* MC_smx_actor_get_host_name(smx_actor_t actor) { if (mc_model_checker == nullptr) diff --git a/src/mc/mc_smx.hpp b/src/mc/mc_smx.hpp index d0b329d497..230ca5c454 100644 --- a/src/mc/mc_smx.hpp +++ b/src/mc/mc_smx.hpp @@ -37,7 +37,6 @@ * @param process the MCed process * @param req the simcall (copied in the local process) */ -XBT_PRIVATE smx_actor_t MC_smx_simcall_get_issuer(s_smx_simcall const* req); XBT_PRIVATE const char* MC_smx_actor_get_name(smx_actor_t p); XBT_PRIVATE const char* MC_smx_actor_get_host_name(smx_actor_t p);