From 94d6c6500c1ea5acfa556b4276499046816b0954 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Tue, 12 Feb 2019 14:02:26 +0100 Subject: [PATCH] SIMIX_process_killall becomes ActorImp::kill_all --- src/s4u/s4u_Actor.cpp | 2 +- src/simix/ActorImpl.cpp | 18 +++++++----------- src/simix/ActorImpl.hpp | 2 +- src/simix/smx_global.cpp | 2 +- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 794920c99f..3713c6da8e 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -218,7 +218,7 @@ ActorPtr Actor::by_pid(aid_t pid) void Actor::kill_all() { smx_actor_t self = SIMIX_process_self(); - simgrid::simix::simcall([&self] { SIMIX_process_killall(self); }); + simgrid::simix::simcall([self] { self->kill_all(); }); } std::unordered_map* Actor::get_properties() diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index ac2292e0dd..71605ced34 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -177,6 +177,13 @@ void ActorImpl::kill(smx_actor_t actor) } } +void ActorImpl::kill_all() +{ + for (auto const& kv : simix_global->process_list) + if (kv.second != this) + this->kill(kv.second); +} + void ActorImpl::set_kill_time(double kill_time) { if (kill_time <= SIMIX_get_clock()) @@ -530,17 +537,6 @@ void SIMIX_process_throw(smx_actor_t actor, xbt_errcat_t cat, int value, const c actor->waiting_synchro = nullptr; } -/** - * @brief Kills all running processes. - * @param issuer this one will not be killed - */ -void SIMIX_process_killall(smx_actor_t issuer) -{ - for (auto const& kv : simix_global->process_list) - if (kv.second != issuer) - issuer->kill(kv.second); -} - void simcall_HANDLER_process_suspend(smx_simcall_t simcall, smx_actor_t actor) { smx_activity_t sync_suspend = actor->suspend(simcall->issuer); diff --git a/src/simix/ActorImpl.hpp b/src/simix/ActorImpl.hpp index 35a9556122..209a21a3e6 100644 --- a/src/simix/ActorImpl.hpp +++ b/src/simix/ActorImpl.hpp @@ -96,6 +96,7 @@ public: std::unordered_map* properties, smx_actor_t parent_actor); void exit(); void kill(smx_actor_t actor); + void kill_all(); void daemonize(); bool is_daemon() { return daemon_; } /** Whether this actor has been daemonized */ @@ -161,7 +162,6 @@ XBT_PUBLIC void create_maestro(std::function code); typedef simgrid::kernel::actor::ActorImpl* smx_actor_t; XBT_PRIVATE void SIMIX_process_runall(); -XBT_PRIVATE void SIMIX_process_killall(smx_actor_t issuer); XBT_PRIVATE void SIMIX_process_cleanup(smx_actor_t arg); XBT_PRIVATE void SIMIX_process_empty_trash(); XBT_PRIVATE void SIMIX_process_yield(smx_actor_t self); diff --git a/src/simix/smx_global.cpp b/src/simix/smx_global.cpp index 7e404010f0..c696cab45d 100644 --- a/src/simix/smx_global.cpp +++ b/src/simix/smx_global.cpp @@ -240,7 +240,7 @@ void SIMIX_clean() #endif /* Kill all processes (but maestro) */ - SIMIX_process_killall(simix_global->maestro_process); + simix_global->maestro_process->kill_all(); SIMIX_context_runall(); SIMIX_process_empty_trash(); -- 2.20.1