From: Frederic Suter Date: Wed, 13 Feb 2019 08:15:29 +0000 (+0100) Subject: SIMIX_process_join becomes ActorImpl::join X-Git-Tag: v3_22~343 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/04a7baf19b76686f36ed0693acaacdf2adbc5d0d SIMIX_process_join becomes ActorImpl::join --- diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index bb9357c7da..2a5262f149 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -277,6 +277,20 @@ void ActorImpl::resume() XBT_OUT(); } +smx_activity_t ActorImpl::join(smx_actor_t actor, double timeout) +{ + smx_activity_t res = this->sleep(timeout); + intrusive_ptr_add_ref(res.get()); + SIMIX_process_on_exit(actor, + [](int, void* arg) { + auto sleep = static_cast(arg); + if (sleep->surf_action_) + sleep->surf_action_->finish(simgrid::kernel::resource::Action::State::FINISHED); + intrusive_ptr_release(sleep); + }, + res.get()); + return res; +} smx_activity_t ActorImpl::sleep(double duration) { if (not host_->is_on()) @@ -595,26 +609,11 @@ void simcall_HANDLER_process_join(smx_simcall_t simcall, smx_actor_t process, do SIMIX_simcall_answer(simcall); return; } - smx_activity_t sync = SIMIX_process_join(simcall->issuer, process, timeout); + smx_activity_t sync = simcall->issuer->join(process, timeout); sync->simcalls_.push_back(simcall); simcall->issuer->waiting_synchro = sync; } -smx_activity_t SIMIX_process_join(smx_actor_t issuer, smx_actor_t process, double timeout) -{ - smx_activity_t res = issuer->sleep(timeout); - intrusive_ptr_add_ref(res.get()); - SIMIX_process_on_exit(process, - [](int, void* arg) { - auto sleep = static_cast(arg); - if (sleep->surf_action_) - sleep->surf_action_->finish(simgrid::kernel::resource::Action::State::FINISHED); - intrusive_ptr_release(sleep); - }, - res.get()); - return res; -} - void simcall_HANDLER_process_sleep(smx_simcall_t simcall, double duration) { if (MC_is_active() || MC_record_replay_is_active()) { diff --git a/src/simix/ActorImpl.hpp b/src/simix/ActorImpl.hpp index b1dd9f9b2d..684b322919 100644 --- a/src/simix/ActorImpl.hpp +++ b/src/simix/ActorImpl.hpp @@ -104,6 +104,7 @@ public: simgrid::s4u::Actor* restart(); smx_activity_t suspend(ActorImpl* issuer); void resume(); + smx_activity_t join(smx_actor_t actor, double timeout); smx_activity_t sleep(double duration); void set_user_data(void* data) { userdata_ = data; } void* get_user_data() { return userdata_; } @@ -169,6 +170,5 @@ XBT_PRIVATE void SIMIX_process_yield(smx_actor_t self); extern void (*SMPI_switch_data_segment)(simgrid::s4u::ActorPtr actor); XBT_PRIVATE void SIMIX_process_sleep_destroy(smx_activity_t synchro); -XBT_PRIVATE smx_activity_t SIMIX_process_join(smx_actor_t issuer, smx_actor_t process, double timeout); #endif