X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b9684d3607aa558c95b7185ddf147b478a7e367f..9a28137e0100255c9e849a39167590cb2305aa82:/src/mc/mc_smx.cpp diff --git a/src/mc/mc_smx.cpp b/src/mc/mc_smx.cpp index b7135d6a59..e3d50c9b18 100644 --- a/src/mc/mc_smx.cpp +++ b/src/mc/mc_smx.cpp @@ -5,16 +5,21 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include +#include #include +#include +#include +#include #include #include #include #include -#include "src/simix/smx_private.h" +#include +#include "src/simix/smx_private.h" #include "src/mc/mc_smx.h" #include "src/mc/ModelChecker.hpp" @@ -45,13 +50,14 @@ simgrid::mc::SimixProcessInformation* process_info_cast(smx_process_t p) */ static void MC_process_refresh_simix_process_list( simgrid::mc::Process* process, - std::vector& target, xbt_swag_t remote_swag) + std::vector& target, + simgrid::mc::RemotePtr remote_swag) { target.clear(); // swag = REMOTE(*simix_global->process_list) s_xbt_swag_t swag; - process->read_bytes(&swag, sizeof(swag), remote(remote_swag)); + process->read_bytes(&swag, sizeof(swag), remote_swag); // Load each element of the vector from the MCed process: int i = 0; @@ -79,19 +85,27 @@ void Process::refresh_simix() // TODO, avoid to reload `&simix_global`, `simix_global`, `*simix_global` - // simix_global_p = REMOTE(simix_global); - smx_global_t simix_global_p; - this->read_variable("simix_global", &simix_global_p, sizeof(simix_global_p)); + static_assert(std::is_same< + std::unique_ptr, + decltype(simix_global) + >::value, "Unexpected type for simix_global"); + static_assert(sizeof(simix_global) == sizeof(simgrid::simix::Global*), + "Bad size for simix_global"); + + // simix_global_p = REMOTE(simix_global.get()); + RemotePtr simix_global_p = + this->read_variable("simix_global"); // simix_global = REMOTE(*simix_global) - simgrid::simix::Global simix_global; - this->read_bytes(&simix_global, sizeof(simix_global), - remote(simix_global_p)); + Remote simix_global = + this->read(simix_global_p); MC_process_refresh_simix_process_list( - this, this->smx_process_infos, simix_global.process_list); + this, this->smx_process_infos, + remote(simix_global.getBuffer()->process_list)); MC_process_refresh_simix_process_list( - this, this->smx_old_process_infos, simix_global.process_to_destroy); + this, this->smx_old_process_infos, + remote(simix_global.getBuffer()->process_to_destroy)); this->cache_flags_ |= Process::cache_simix_processes; } @@ -158,7 +172,7 @@ const char* MC_smx_process_get_host_name(smx_process_t p) simgrid::xbt::string_data remote_string = process->read(remote_string_address); char hostname[remote_string.len]; process->read_bytes(hostname, remote_string.len + 1, remote(remote_string.data)); - info->hostname = mc_model_checker->get_host_name(hostname); + info->hostname = mc_model_checker->get_host_name(hostname).c_str(); return info->hostname; }