From a6e4a812f0edc58eeb342f0c990122eabf51e6ec Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 20 Feb 2022 21:50:06 +0100 Subject: [PATCH] Rename SynchroRawImpl to SynchroImpl They will soon be made visible in S4U when Mutex::lock_async() and friends gets implemented. In turn, lock_async() is good for two reasons: symmetry of lock() with other activities; efficiency of MC reduction technics (see the thesis of The Anh for details). --- MANIFEST.in | 4 +-- include/simgrid/forward.h | 4 +-- src/kernel/EngineImpl.cpp | 2 +- src/kernel/EngineImpl.hpp | 2 +- src/kernel/activity/ActivityImpl.cpp | 4 +-- src/kernel/activity/ConditionVariableImpl.cpp | 4 +-- src/kernel/activity/MutexImpl.cpp | 4 +-- src/kernel/activity/SemaphoreImpl.cpp | 4 +-- .../activity/{SynchroRaw.cpp => Synchro.cpp} | 26 +++++++++---------- .../activity/{SynchroRaw.hpp => Synchro.hpp} | 12 ++++----- tools/cmake/DefinePackages.cmake | 4 +-- 11 files changed, 35 insertions(+), 35 deletions(-) rename src/kernel/activity/{SynchroRaw.cpp => Synchro.cpp} (76%) rename src/kernel/activity/{SynchroRaw.hpp => Synchro.hpp} (70%) diff --git a/MANIFEST.in b/MANIFEST.in index 866f07995a..f5cec521c6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2254,8 +2254,8 @@ include src/kernel/activity/SemaphoreImpl.cpp include src/kernel/activity/SemaphoreImpl.hpp include src/kernel/activity/SleepImpl.cpp include src/kernel/activity/SleepImpl.hpp -include src/kernel/activity/SynchroRaw.cpp -include src/kernel/activity/SynchroRaw.hpp +include src/kernel/activity/Synchro.cpp +include src/kernel/activity/Synchro.hpp include src/kernel/actor/ActorImpl.cpp include src/kernel/actor/ActorImpl.hpp include src/kernel/actor/CommObserver.cpp diff --git a/include/simgrid/forward.h b/include/simgrid/forward.h index 88f7a95201..84daec4f81 100644 --- a/include/simgrid/forward.h +++ b/include/simgrid/forward.h @@ -140,8 +140,8 @@ namespace activity { using MutexImplPtr = boost::intrusive_ptr; XBT_PUBLIC void intrusive_ptr_add_ref(MutexImpl* mutex); XBT_PUBLIC void intrusive_ptr_release(MutexImpl* mutex); - class RawImpl; - using RawImplPtr = boost::intrusive_ptr; + class SynchroImpl; + using RawImplPtr = boost::intrusive_ptr; class SemaphoreImpl; using SemaphoreImplPtr = boost::intrusive_ptr; XBT_PUBLIC void intrusive_ptr_add_ref(SemaphoreImpl* sem); diff --git a/src/kernel/EngineImpl.cpp b/src/kernel/EngineImpl.cpp index de60c791c4..3c136181c7 100644 --- a/src/kernel/EngineImpl.cpp +++ b/src/kernel/EngineImpl.cpp @@ -556,7 +556,7 @@ void EngineImpl::display_all_actor_status() const if (boost::dynamic_pointer_cast(actor->waiting_synchro_) != nullptr) synchro_description = "sleeping"; - if (boost::dynamic_pointer_cast(actor->waiting_synchro_) != nullptr) + if (boost::dynamic_pointer_cast(actor->waiting_synchro_) != nullptr) synchro_description = "synchronization"; if (boost::dynamic_pointer_cast(actor->waiting_synchro_) != nullptr) diff --git a/src/kernel/EngineImpl.hpp b/src/kernel/EngineImpl.hpp index adc4cb12d3..b3259ce1ef 100644 --- a/src/kernel/EngineImpl.hpp +++ b/src/kernel/EngineImpl.hpp @@ -17,7 +17,7 @@ #include "src/kernel/activity/IoImpl.hpp" #include "src/kernel/activity/MailboxImpl.hpp" #include "src/kernel/activity/SleepImpl.hpp" -#include "src/kernel/activity/SynchroRaw.hpp" +#include "src/kernel/activity/Synchro.hpp" #include "src/kernel/actor/ActorImpl.hpp" #include "src/kernel/resource/SplitDuplexLinkImpl.hpp" diff --git a/src/kernel/activity/ActivityImpl.cpp b/src/kernel/activity/ActivityImpl.cpp index 2e1de24f10..fa2c8114b3 100644 --- a/src/kernel/activity/ActivityImpl.cpp +++ b/src/kernel/activity/ActivityImpl.cpp @@ -8,7 +8,7 @@ #include "src/kernel/activity/ActivityImpl.hpp" #include "src/kernel/activity/CommImpl.hpp" -#include "src/kernel/activity/SynchroRaw.hpp" +#include "src/kernel/activity/Synchro.hpp" #include "src/kernel/actor/ActorImpl.hpp" #include "src/kernel/actor/SimcallObserver.hpp" #include "src/kernel/resource/CpuImpl.hpp" @@ -120,7 +120,7 @@ void ActivityImpl::wait_for(actor::ActorImpl* issuer, double timeout) else comm->dst_timeout_ = sleep; } else { - RawImplPtr synchro(new RawImpl([this, issuer]() { + RawImplPtr synchro(new SynchroImpl([this, issuer]() { this->unregister_simcall(&issuer->simcall_); issuer->waiting_synchro_ = nullptr; issuer->exception_ = nullptr; diff --git a/src/kernel/activity/ConditionVariableImpl.cpp b/src/kernel/activity/ConditionVariableImpl.cpp index 9e45fd00a0..3cdfa9c4a6 100644 --- a/src/kernel/activity/ConditionVariableImpl.cpp +++ b/src/kernel/activity/ConditionVariableImpl.cpp @@ -5,7 +5,7 @@ #include "src/kernel/activity/ConditionVariableImpl.hpp" #include "src/kernel/activity/MutexImpl.hpp" -#include "src/kernel/activity/SynchroRaw.hpp" +#include "src/kernel/activity/Synchro.hpp" #include "src/kernel/actor/SimcallObserver.hpp" #include // std::isfinite @@ -73,7 +73,7 @@ void ConditionVariableImpl::wait(smx_mutex_t mutex, double timeout, actor::Actor mutex->unlock(issuer); } - RawImplPtr synchro(new RawImpl([this, issuer]() { + RawImplPtr synchro(new SynchroImpl([this, issuer]() { this->remove_sleeping_actor(*issuer); auto* observer = dynamic_cast(issuer->simcall_.observer_); xbt_assert(observer != nullptr); diff --git a/src/kernel/activity/MutexImpl.cpp b/src/kernel/activity/MutexImpl.cpp index 660d77cfe4..2e21728e98 100644 --- a/src/kernel/activity/MutexImpl.cpp +++ b/src/kernel/activity/MutexImpl.cpp @@ -4,7 +4,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "src/kernel/activity/MutexImpl.hpp" -#include "src/kernel/activity/SynchroRaw.hpp" +#include "src/kernel/activity/Synchro.hpp" #if SIMGRID_HAVE_MC #include "simgrid/modelchecker.h" @@ -30,7 +30,7 @@ void MutexImpl::lock(actor::ActorImpl* issuer) if (locked_) { /* FIXME: check if the host is active ? */ /* Somebody using the mutex, use a synchronization to get host failures */ - RawImplPtr synchro(new RawImpl([this, issuer]() { this->remove_sleeping_actor(*issuer); })); + RawImplPtr synchro(new SynchroImpl([this, issuer]() { this->remove_sleeping_actor(*issuer); })); (*synchro).set_host(issuer->get_host()).start(); synchro->register_simcall(&issuer->simcall_); sleeping_.push_back(*issuer); diff --git a/src/kernel/activity/SemaphoreImpl.cpp b/src/kernel/activity/SemaphoreImpl.cpp index e5b4f42fe8..7d9bfab7e2 100644 --- a/src/kernel/activity/SemaphoreImpl.cpp +++ b/src/kernel/activity/SemaphoreImpl.cpp @@ -4,7 +4,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "src/kernel/activity/SemaphoreImpl.hpp" -#include "src/kernel/activity/SynchroRaw.hpp" +#include "src/kernel/activity/Synchro.hpp" #include "src/kernel/actor/SimcallObserver.hpp" #include // std::isfinite @@ -20,7 +20,7 @@ void SemaphoreImpl::acquire(actor::ActorImpl* issuer, double timeout) xbt_assert(std::isfinite(timeout), "timeout is not finite!"); if (value_ <= 0) { - RawImplPtr synchro(new RawImpl([this, issuer]() { + RawImplPtr synchro(new SynchroImpl([this, issuer]() { this->remove_sleeping_actor(*issuer); auto* observer = dynamic_cast(issuer->simcall_.observer_); xbt_assert(observer != nullptr); diff --git a/src/kernel/activity/SynchroRaw.cpp b/src/kernel/activity/Synchro.cpp similarity index 76% rename from src/kernel/activity/SynchroRaw.cpp rename to src/kernel/activity/Synchro.cpp index 60d8f806f7..21dd002330 100644 --- a/src/kernel/activity/SynchroRaw.cpp +++ b/src/kernel/activity/Synchro.cpp @@ -6,54 +6,54 @@ #include #include -#include "src/kernel/activity/SynchroRaw.hpp" +#include "src/kernel/activity/Synchro.hpp" #include "src/kernel/actor/ActorImpl.hpp" #include "src/kernel/context/Context.hpp" #include "src/kernel/resource/CpuImpl.hpp" #include "src/simix/popping_private.hpp" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(ker_synchro, kernel, - "Kernel synchronization mechanisms (mutex, semaphores and conditions)"); + "Kernel synchronization activity (lock/acquire on a mutex, semaphore or condition)"); namespace simgrid { namespace kernel { namespace activity { -RawImpl& RawImpl::set_host(s4u::Host* host) +SynchroImpl& SynchroImpl::set_host(s4u::Host* host) { host_ = host; return *this; } -RawImpl& RawImpl::set_timeout(double timeout) +SynchroImpl& SynchroImpl::set_timeout(double timeout) { timeout_ = timeout; return *this; } -RawImpl* RawImpl::start() +SynchroImpl* SynchroImpl::start() { surf_action_ = host_->get_cpu()->sleep(timeout_); surf_action_->set_activity(this); return this; } -void RawImpl::suspend() +void SynchroImpl::suspend() { /* The suspension of raw synchros is delayed to when the actor is rescheduled. */ } -void RawImpl::resume() +void SynchroImpl::resume() { /* I cannot resume raw synchros directly. This is delayed to when the actor is rescheduled at * the end of the synchro. */ } -void RawImpl::cancel() +void SynchroImpl::cancel() { /* I cannot cancel raw synchros directly. */ } -void RawImpl::post() +void SynchroImpl::post() { if (surf_action_->get_state() == resource::Action::State::FAILED) set_state(State::FAILED); @@ -64,20 +64,20 @@ void RawImpl::post() /* Answer all simcalls associated with the synchro */ finish(); } -void RawImpl::set_exception(actor::ActorImpl* issuer) +void SynchroImpl::set_exception(actor::ActorImpl* issuer) { if (get_state() == State::FAILED) { issuer->context_->set_wannadie(); issuer->exception_ = std::make_exception_ptr(HostFailureException(XBT_THROW_POINT, "Host failed")); } else { - xbt_assert(get_state() == State::SRC_TIMEOUT, "Internal error in RawImpl::finish() unexpected synchro state %s", + xbt_assert(get_state() == State::SRC_TIMEOUT, "Internal error in SynchroImpl::finish() unexpected synchro state %s", get_state_str()); } } -void RawImpl::finish() +void SynchroImpl::finish() { - XBT_DEBUG("RawImpl::finish() in state %s", get_state_str()); + XBT_DEBUG("SynchroImpl::finish() in state %s", get_state_str()); xbt_assert(simcalls_.size() == 1, "Unexpected number of simcalls waiting: %zu", simcalls_.size()); smx_simcall_t simcall = simcalls_.front(); simcalls_.pop_front(); diff --git a/src/kernel/activity/SynchroRaw.hpp b/src/kernel/activity/Synchro.hpp similarity index 70% rename from src/kernel/activity/SynchroRaw.hpp rename to src/kernel/activity/Synchro.hpp index b8b640e440..0d80d3bc13 100644 --- a/src/kernel/activity/SynchroRaw.hpp +++ b/src/kernel/activity/Synchro.hpp @@ -14,18 +14,18 @@ namespace simgrid { namespace kernel { namespace activity { - /** Used to implement mutexes, semaphores and conditions */ -class XBT_PUBLIC RawImpl : public ActivityImpl_T { +/** Used to implement mutexes, semaphores and conditions */ +class XBT_PUBLIC SynchroImpl : public ActivityImpl_T { sg_host_t host_ = nullptr; double timeout_ = -1; std::function finish_callback_; public: - explicit RawImpl(const std::function& finish_callback) : finish_callback_(finish_callback) {} - RawImpl& set_host(s4u::Host* host); - RawImpl& set_timeout(double timeout) override; + explicit SynchroImpl(const std::function& finish_callback) : finish_callback_(finish_callback) {} + SynchroImpl& set_host(s4u::Host* host); + SynchroImpl& set_timeout(double timeout) override; - RawImpl* start(); + SynchroImpl* start(); void suspend() override; void resume() override; void cancel() override; diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index b7faed5bda..68a60f0f27 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -409,8 +409,8 @@ set(SIMIX_SRC src/kernel/activity/SemaphoreImpl.hpp src/kernel/activity/SleepImpl.cpp src/kernel/activity/SleepImpl.hpp - src/kernel/activity/SynchroRaw.cpp - src/kernel/activity/SynchroRaw.hpp + src/kernel/activity/Synchro.cpp + src/kernel/activity/Synchro.hpp src/kernel/actor/ActorImpl.cpp src/kernel/actor/ActorImpl.hpp src/kernel/actor/CommObserver.cpp -- 2.20.1