From 2e149d576acfd464c0b170a52845f3e94dde9d1c Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sat, 26 Jan 2019 20:49:06 +0100 Subject: [PATCH] inline a function --- include/simgrid/simix.h | 1 - src/kernel/context/Context.cpp | 10 +++++++++- src/simix/ActorImpl.cpp | 11 ----------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/include/simgrid/simix.h b/include/simgrid/simix.h index 73a6bb15fc..3f1bb78ff1 100644 --- a/include/simgrid/simix.h +++ b/include/simgrid/simix.h @@ -157,7 +157,6 @@ XBT_PUBLIC const char* SIMIX_process_self_get_name(); XBT_PUBLIC void SIMIX_process_self_set_data(void* data); XBT_PUBLIC void* SIMIX_process_self_get_data(); XBT_PUBLIC int SIMIX_process_has_pending_comms(smx_actor_t process); -XBT_PUBLIC void SIMIX_process_on_exit_runall(smx_actor_t process); XBT_PUBLIC void SIMIX_process_on_exit(smx_actor_t process, int_f_pvoid_pvoid_t fun, void* data); SG_END_DECL() diff --git a/src/kernel/context/Context.cpp b/src/kernel/context/Context.cpp index 445ddea640..6bb6e89c65 100644 --- a/src/kernel/context/Context.cpp +++ b/src/kernel/context/Context.cpp @@ -93,7 +93,15 @@ void Context::stop() } actor_->finished_ = true; - SIMIX_process_on_exit_runall(actor_); + + // Execute the termination callbacks + simgrid::s4u::Actor::on_destruction(actor_->iface()); + smx_process_exit_status_t exit_status = (actor_->context_->iwannadie) ? SMX_EXIT_FAILURE : SMX_EXIT_SUCCESS; + while (not actor_->on_exit.empty()) { + s_smx_process_exit_fun_t exit_fun = actor_->on_exit.back(); + actor_->on_exit.pop_back(); + (exit_fun.fun)(exit_status, exit_fun.arg); + } /* cancel non-blocking activities */ for (auto activity : actor_->comms) diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 3da85bf27c..9b0f19bdbb 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -722,17 +722,6 @@ smx_actor_t SIMIX_process_from_PID(aid_t PID) return actor == simix_global->process_list.end() ? nullptr : actor->second; } -void SIMIX_process_on_exit_runall(smx_actor_t actor) -{ - simgrid::s4u::Actor::on_destruction(actor->iface()); - smx_process_exit_status_t exit_status = (actor->context_->iwannadie) ? SMX_EXIT_FAILURE : SMX_EXIT_SUCCESS; - while (not actor->on_exit.empty()) { - s_smx_process_exit_fun_t exit_fun = actor->on_exit.back(); - actor->on_exit.pop_back(); - (exit_fun.fun)(exit_status, exit_fun.arg); - } -} - void SIMIX_process_on_exit(smx_actor_t actor, int_f_pvoid_pvoid_t fun, void* data) { SIMIX_process_on_exit(actor, [fun](int a, void* b) { fun((void*)(intptr_t)a, b); }, data); -- 2.20.1