X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4d140762b2b9c8746cdd3b0680a7167867ba0ad9..f5ad0a2a3554dc8f10c8fbba5715b7c92ff1d350:/src/mc/remote/Client.cpp diff --git a/src/mc/remote/Client.cpp b/src/mc/remote/Client.cpp index e82f14209f..20b9c2dcbb 100644 --- a/src/mc/remote/Client.cpp +++ b/src/mc/remote/Client.cpp @@ -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; @@ -118,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() { @@ -134,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;