From ef1af4e53dff6d26dcfabafed5e78b461866071f Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sat, 30 Jul 2022 22:38:14 +0200 Subject: [PATCH] inline a function, kill a file --- MANIFEST.in | 1 - src/mc/mc_smx.cpp | 68 -------------------------------- src/mc/remote/RemoteProcess.cpp | 30 +++++++++++++- src/mc/remote/RemoteProcess.hpp | 1 - tools/cmake/DefinePackages.cmake | 1 - 5 files changed, 29 insertions(+), 72 deletions(-) delete mode 100644 src/mc/mc_smx.cpp diff --git a/MANIFEST.in b/MANIFEST.in index 5be3136f88..cf536e284d 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2332,7 +2332,6 @@ include src/mc/mc_record.cpp include src/mc/mc_record.hpp include src/mc/mc_replay.hpp include src/mc/mc_safety.hpp -include src/mc/mc_smx.cpp include src/mc/remote/AppSide.cpp include src/mc/remote/AppSide.hpp include src/mc/remote/Channel.cpp diff --git a/src/mc/mc_smx.cpp b/src/mc/mc_smx.cpp deleted file mode 100644 index 7593fc29f7..0000000000 --- a/src/mc/mc_smx.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (c) 2015-2022. The SimGrid Team. All rights reserved. */ - -/* This program is free software; you can redistribute it and/or modify it - * under the terms of the license (GNU LGPL) which comes with this package. */ - -#include "simgrid/s4u/Host.hpp" - -#include "src/mc/ModelChecker.hpp" -#include "src/mc/remote/RemoteProcess.hpp" - -/** @file - * @brief (Cross-process, MCer/MCed) Access to SMX structures - * - * We copy some C data structure from the MCed process in the MCer process. - * This is implemented by: - * - * - `model_checker->process.smx_process_infos` - * (copy of `EngineImpl::actor_list_`); - * - * - `model_checker->hostnames`. - * - * The process lists are currently refreshed each time MCed code is executed. - * We don't try to give a persistent MCer address for a given MCed process. - * For this reason, a MCer simgrid::mc::Process* is currently not reusable after - * MCed code. - */ - -/** Load the remote list of processes into a vector - * - * @param process MCed process - * @param target Local vector (to be filled with `simgrid::mc::ActorInformation`) - * @param remote_dynar Address of the process dynar in the remote list - */ -static void MC_process_refresh_simix_actor_dynar(const simgrid::mc::RemoteProcess* process, - std::vector& target, - simgrid::mc::RemotePtr remote_dynar) -{ - target.clear(); - - s_xbt_dynar_t dynar; - process->read_bytes(&dynar, sizeof(dynar), remote_dynar); - - auto* data = static_cast(::operator new(dynar.elmsize * dynar.used)); - process->read_bytes(data, dynar.elmsize * dynar.used, simgrid::mc::RemotePtr(dynar.data)); - - // Load each element of the vector from the MCed process: - for (unsigned int i = 0; i < dynar.used; ++i) { - simgrid::mc::ActorInformation info; - - info.address = simgrid::mc::RemotePtr(data[i]); - process->read_bytes(&info.copy, sizeof(info.copy), simgrid::mc::remote(data[i])); - target.push_back(std::move(info)); - } - ::operator delete(data); -} -namespace simgrid::mc { - -void RemoteProcess::refresh_simix() -{ - if (this->cache_flags_ & RemoteProcess::cache_simix_processes) - return; - - MC_process_refresh_simix_actor_dynar(this, this->smx_actors_infos, actors_addr_); - - this->cache_flags_ |= RemoteProcess::cache_simix_processes; -} - -} // namespace simgrid::mc diff --git a/src/mc/remote/RemoteProcess.cpp b/src/mc/remote/RemoteProcess.cpp index 654717d3ff..4411375eef 100644 --- a/src/mc/remote/RemoteProcess.cpp +++ b/src/mc/remote/RemoteProcess.cpp @@ -410,9 +410,37 @@ void RemoteProcess::ignore_local_variable(const char* var_name, const char* fram info->remove_local_variable(var_name, frame_name); } +/** Load the remote list of actors into the Checker process + * + * FIXME: This shall die alltogether and be reimplemented with a networked communication to not suppose anything about + * the memory layout of the checked App if avoidable. + * + * Liveness checking will always require to explore the memory of the App, but safety checking doesn't. + */ + std::vector& RemoteProcess::actors() { - this->refresh_simix(); + if (not(this->cache_flags_ & RemoteProcess::cache_simix_processes)) { + smx_actors_infos.clear(); + + s_xbt_dynar_t dynar; + read_bytes(&dynar, sizeof(dynar), actors_addr_); + + auto* data = static_cast(::operator new(dynar.elmsize* dynar.used)); + read_bytes(data, dynar.elmsize * dynar.used, simgrid::mc::RemotePtr(dynar.data)); + + // Load each element of the vector from the MCed process: + for (unsigned int i = 0; i < dynar.used; ++i) { + simgrid::mc::ActorInformation info; + + info.address = simgrid::mc::RemotePtr(data[i]); + read_bytes(&info.copy, sizeof(info.copy), simgrid::mc::remote(data[i])); + smx_actors_infos.push_back(std::move(info)); + } + ::operator delete(data); + + this->cache_flags_ |= RemoteProcess::cache_simix_processes; + } return smx_actors_infos; } diff --git a/src/mc/remote/RemoteProcess.hpp b/src/mc/remote/RemoteProcess.hpp index 47f6151fb0..02c4fba62b 100644 --- a/src/mc/remote/RemoteProcess.hpp +++ b/src/mc/remote/RemoteProcess.hpp @@ -181,7 +181,6 @@ private: void init_memory_map_info(); void refresh_heap(); void refresh_malloc_info(); - void refresh_simix(); pid_t pid_ = -1; bool running_ = false; diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index ae045cefa4..38a8e2654e 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -653,7 +653,6 @@ set(MC_SRC src/mc/mc_private.hpp src/mc/mc_record.cpp src/mc/mc_safety.hpp - src/mc/mc_smx.cpp src/mc/udpor_global.cpp src/mc/udpor_global.hpp -- 2.20.1