From: Frederic Suter Date: Thu, 5 Sep 2019 11:23:13 +0000 (+0200) Subject: no more need to pass issuer to suspend X-Git-Tag: v3.24~69^2~27 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/781a388a7f1e57399562aa756e2d426bb009b4a4 no more need to pass issuer to suspend --- diff --git a/src/kernel/activity/SleepImpl.cpp b/src/kernel/activity/SleepImpl.cpp index e20cdf7d66..dc94cffb13 100644 --- a/src/kernel/activity/SleepImpl.cpp +++ b/src/kernel/activity/SleepImpl.cpp @@ -62,7 +62,7 @@ void SleepImpl::finish() if (simcall->issuer_->is_suspended()) { XBT_DEBUG("Wait! This process is suspended and can't wake up now."); simcall->issuer_->suspended_ = false; - simcall->issuer_->suspend(simcall->issuer_); + simcall->issuer_->suspend(); } else { simcall->issuer_->simcall_answer(); } diff --git a/src/kernel/actor/ActorImpl.cpp b/src/kernel/actor/ActorImpl.cpp index e57a46ee3a..4c83228784 100644 --- a/src/kernel/actor/ActorImpl.cpp +++ b/src/kernel/actor/ActorImpl.cpp @@ -297,7 +297,7 @@ void ActorImpl::yield() xbt_assert(exception_ == nullptr, "Gasp! This exception may be lost by subsequent calls."); suspended_ = false; - suspend(this); + suspend(); } if (exception_ != nullptr) { @@ -357,7 +357,7 @@ s4u::Actor* ActorImpl::restart() return actor->ciface(); } -void ActorImpl::suspend(ActorImpl* issuer) +void ActorImpl::suspend() { if (suspended_) { XBT_DEBUG("Actor '%s' is already suspended", get_cname()); diff --git a/src/kernel/actor/ActorImpl.hpp b/src/kernel/actor/ActorImpl.hpp index a560305cb3..d0c75f2c60 100644 --- a/src/kernel/actor/ActorImpl.hpp +++ b/src/kernel/actor/ActorImpl.hpp @@ -123,7 +123,7 @@ public: void daemonize(); bool is_suspended() { return suspended_; } s4u::Actor* restart(); - void suspend(ActorImpl* issuer); + void suspend(); void resume(); activity::ActivityImplPtr join(ActorImpl* actor, double timeout); activity::ActivityImplPtr sleep(double duration); diff --git a/src/plugins/vm/VirtualMachineImpl.cpp b/src/plugins/vm/VirtualMachineImpl.cpp index b7b2002332..deecf72441 100644 --- a/src/plugins/vm/VirtualMachineImpl.cpp +++ b/src/plugins/vm/VirtualMachineImpl.cpp @@ -185,7 +185,7 @@ void VirtualMachineImpl::suspend(smx_actor_t issuer) for (auto& smx_process : process_list_) { XBT_DEBUG("suspend %s", smx_process.get_cname()); - smx_process.suspend(issuer); + smx_process.suspend(); } XBT_DEBUG("suspend all processes on the VM done done"); diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 360cc93eb5..5f75e2a1fd 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -190,7 +190,7 @@ void Actor::suspend() auto target = pimpl_; s4u::Actor::on_suspend(*this); kernel::actor::simcall_blocking([issuer, target]() { - target->suspend(issuer); + target->suspend(); if (target != issuer) { /* If we are suspending ourselves, then just do not finish the simcall now */ issuer->simcall_answer(); @@ -441,7 +441,9 @@ Host* get_host() void suspend() { - SIMIX_process_self()->iface()->suspend(); + kernel::actor::ActorImpl* self = SIMIX_process_self(); + s4u::Actor::on_suspend(*self->ciface()); + kernel::actor::simcall_blocking([self] { self->suspend(); }); } void resume()