From 99bdda3ee4939633343432d14d83a58a7f3b77ff Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Wed, 13 Feb 2019 11:45:41 +0100 Subject: [PATCH 1/1] merge SIMIX_synchro_finish into RawImpl::post --- src/kernel/activity/SynchroRaw.cpp | 16 ++++++++++++---- src/simix/smx_synchro.cpp | 18 ------------------ src/simix/smx_synchro_private.hpp | 1 - 3 files changed, 12 insertions(+), 23 deletions(-) diff --git a/src/kernel/activity/SynchroRaw.cpp b/src/kernel/activity/SynchroRaw.cpp index 8023822898..9326bd2239 100644 --- a/src/kernel/activity/SynchroRaw.cpp +++ b/src/kernel/activity/SynchroRaw.cpp @@ -5,6 +5,7 @@ #include "src/kernel/activity/SynchroRaw.hpp" #include "simgrid/kernel/resource/Action.hpp" +#include "src/kernel/context/Context.hpp" #include "src/simix/smx_synchro_private.hpp" #include "src/surf/surf_interface.hpp" @@ -30,12 +31,19 @@ void RawImpl::resume() void RawImpl::post() { XBT_IN("(%p)",this); - if (surf_action_->get_state() == resource::Action::State::FAILED) + smx_simcall_t simcall = simcalls_.front(); + simcalls_.pop_front(); + + SIMIX_synchro_stop_waiting(simcall->issuer, simcall); + simcall->issuer->waiting_synchro = nullptr; + + if (surf_action_->get_state() == resource::Action::State::FAILED) { state_ = SIMIX_FAILED; - else if (surf_action_->get_state() == resource::Action::State::FINISHED) + simcall->issuer->context_->iwannadie = true; + } else if (surf_action_->get_state() == resource::Action::State::FINISHED) { state_ = SIMIX_SRC_TIMEOUT; - - SIMIX_synchro_finish(this); + SIMIX_simcall_answer(simcall); + } XBT_OUT(); } } // namespace activity diff --git a/src/simix/smx_synchro.cpp b/src/simix/smx_synchro.cpp index 2aaa5b3a31..0cd3b01a9d 100644 --- a/src/simix/smx_synchro.cpp +++ b/src/simix/smx_synchro.cpp @@ -59,21 +59,3 @@ void SIMIX_synchro_stop_waiting(smx_actor_t process, smx_simcall_t simcall) } XBT_OUT(); } - -void SIMIX_synchro_finish(smx_activity_t synchro) -{ - XBT_IN("(%p)", synchro.get()); - smx_simcall_t simcall = synchro->simcalls_.front(); - synchro->simcalls_.pop_front(); - - SIMIX_synchro_stop_waiting(simcall->issuer, simcall); - simcall->issuer->waiting_synchro = nullptr; - - if (synchro->state_ != SIMIX_SRC_TIMEOUT) { - xbt_assert(synchro->state_ == SIMIX_FAILED); - simcall->issuer->context_->iwannadie = true; - } else { - SIMIX_simcall_answer(simcall); - } - XBT_OUT(); -} diff --git a/src/simix/smx_synchro_private.hpp b/src/simix/smx_synchro_private.hpp index 33aeb6b869..51482fffff 100644 --- a/src/simix/smx_synchro_private.hpp +++ b/src/simix/smx_synchro_private.hpp @@ -11,6 +11,5 @@ smx_activity_t SIMIX_synchro_wait(sg_host_t smx_host, double timeout); XBT_PRIVATE void SIMIX_synchro_stop_waiting(smx_actor_t process, smx_simcall_t simcall); -XBT_PRIVATE void SIMIX_synchro_finish(smx_activity_t synchro); #endif -- 2.20.1