X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e81b0628a697bddad304e69a82d898299ff9fe40..e3d5991eca6de3227dcd3efc36a0f415a45aedf9:/src/mc/mc_base.cpp diff --git a/src/mc/mc_base.cpp b/src/mc/mc_base.cpp index 18447d090f..e6e2a7797d 100644 --- a/src/mc/mc_base.cpp +++ b/src/mc/mc_base.cpp @@ -14,11 +14,11 @@ #include +#include "mc/mc.h" #include "src/mc/mc_base.h" -#include "src/simix/smx_private.h" #include "src/mc/mc_replay.h" -#include "mc/mc.h" -#include "src/mc/mc_protocol.h" +#include "src/mc/remote/mc_protocol.h" +#include "src/simix/smx_private.h" #include "src/kernel/activity/ActivityImpl.hpp" #include "src/kernel/activity/SynchroIo.hpp" @@ -71,6 +71,12 @@ void wait_for_requests(void) SIMIX_simcall_handle(req, 0); } } +#if HAVE_MC + xbt_dynar_reset(simix_global->actors_vector); + for (std::pair kv : simix_global->process_list) { + xbt_dynar_push_as(simix_global->actors_vector, smx_actor_t, kv.second); + } +#endif } /** @brief returns if there this transition can proceed in a finite amount of time @@ -107,8 +113,8 @@ bool request_is_enabled(smx_simcall_t req) #if HAVE_MC // Fetch from MCed memory: // HACK, type puning - simgrid::mc::Remote temp_comm; if (mc_model_checker != nullptr) { + simgrid::mc::Remote temp_comm; mc_model_checker->process().read(temp_comm, remote(act)); act = static_cast(temp_comm.getBuffer()); } @@ -131,8 +137,8 @@ bool request_is_enabled(smx_simcall_t req) xbt_dynar_t comms; simgrid::kernel::activity::Comm *act = static_cast(simcall_comm_wait__get__comm(req)); -#if HAVE_MC +#if HAVE_MC s_xbt_dynar_t comms_buffer; size_t buffer_size = 0; if (mc_model_checker != nullptr) { @@ -189,8 +195,8 @@ bool request_is_enabled(smx_simcall_t req) else if (mc_model_checker != nullptr) { simgrid::mc::Process& modelchecked = mc_model_checker->process(); // TODO, *(mutex->owner) :/ - return modelchecked.resolveProcess(simgrid::mc::remote(mutex->owner))->pid - == modelchecked.resolveProcess(simgrid::mc::remote(req->issuer))->pid; + return modelchecked.resolveActor(simgrid::mc::remote(mutex->owner))->pid == + modelchecked.resolveActor(simgrid::mc::remote(req->issuer))->pid; } #endif else