X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9f56ed220cda230775eba337d021346c01ae37b8..74c1bf2b26c5a3aa0d8c29674dc12993e7c0de15:/src/mc/remote/Client.cpp diff --git a/src/mc/remote/Client.cpp b/src/mc/remote/Client.cpp index 8eaa9f96ca..20b9c2dcbb 100644 --- a/src/mc/remote/Client.cpp +++ b/src/mc/remote/Client.cpp @@ -23,7 +23,7 @@ #include "src/mc/remote/Client.hpp" #include "src/mc/remote/mc_protocol.h" -#include "src/smpi/private.hpp" +#include "src/smpi/include/private.hpp" // We won't need those once the separation MCer/MCed is complete: #include "src/mc/mc_smx.h" @@ -88,7 +88,7 @@ void Client::handleDeadlockCheck(mc_message_t* msg) bool deadlock = false; if (not simix_global->process_list.empty()) { deadlock = true; - for (auto kv : simix_global->process_list) + for (auto const& kv : simix_global->process_list) if (simgrid::mc::actor_is_enabled(kv.second)) { deadlock = false; break; @@ -101,6 +101,7 @@ void Client::handleDeadlockCheck(mc_message_t* msg) } void Client::handleContinue(mc_message_t* msg) { + /* Nothing to do */ } void Client::handleSimcall(s_mc_message_simcall_handle_t* message) { @@ -117,6 +118,12 @@ void Client::handleRestore(s_mc_message_restore_t* message) smpi_really_switch_data_segment(message->index); #endif } +void Client::handleActorEnabled(s_mc_message_actor_enabled_t* msg) +{ + bool res = simgrid::mc::actor_is_enabled(SIMIX_process_from_PID(msg->aid)); + s_mc_message_int answer{MC_MESSAGE_ACTOR_ENABLED_REPLY, res}; + channel_.send(answer); +} void Client::handleMessages() { @@ -133,30 +140,37 @@ void Client::handleMessages() switch (message->type) { case MC_MESSAGE_DEADLOCK_CHECK: - xbt_assert(received_size == sizeof(mc_message_t), "Unexpected size for DEADLOCK_CHECK (%zu != %zu)", + xbt_assert(received_size == sizeof(mc_message_t), "Unexpected size for DEADLOCK_CHECK (%zd != %zu)", received_size, sizeof(mc_message_t)); handleDeadlockCheck(message); break; case MC_MESSAGE_CONTINUE: - xbt_assert(received_size == sizeof(mc_message_t), "Unexpected size for MESSAGE_CONTINUE (%zu != %zu)", + xbt_assert(received_size == sizeof(mc_message_t), "Unexpected size for MESSAGE_CONTINUE (%zd != %zu)", received_size, sizeof(mc_message_t)); handleContinue(message); return; case MC_MESSAGE_SIMCALL_HANDLE: xbt_assert(received_size == sizeof(s_mc_message_simcall_handle_t), - "Unexpected size for SIMCALL_HANDLE (%zu != %zu)", received_size, + "Unexpected size for SIMCALL_HANDLE (%zd != %zu)", received_size, sizeof(s_mc_message_simcall_handle_t)); handleSimcall((s_mc_message_simcall_handle_t*)message_buffer); break; case MC_MESSAGE_RESTORE: - xbt_assert(received_size == sizeof(mc_message_t), "Unexpected size for MESSAGE_RESTORE (%zu != %zu)", + xbt_assert(received_size == sizeof(mc_message_t), "Unexpected size for MESSAGE_RESTORE (%zd != %zu)", received_size, sizeof(mc_message_t)); handleRestore((s_mc_message_restore_t*)message_buffer); break; + case MC_MESSAGE_ACTOR_ENABLED: + xbt_assert(received_size == sizeof(s_mc_message_actor_enabled_t), + "Unexpected size for ACTOR_ENABLED (%zd != %zu)", received_size, + sizeof(s_mc_message_actor_enabled_t)); + handleActorEnabled((s_mc_message_actor_enabled_t*)message_buffer); + break; + default: xbt_die("Received unexpected message %s (%i)", MC_message_type_name(message->type), message->type); break; @@ -223,7 +237,7 @@ void Client::unignoreHeap(void* address, std::size_t size) void Client::declareSymbol(const char* name, int* value) { - s_mc_register_symbol_message_t message; + s_mc_message_register_symbol_t message; message.type = MC_MESSAGE_REGISTER_SYMBOL; if (strlen(name) + 1 > sizeof(message.name)) xbt_die("Symbol is too long");