From: Frederic Suter Date: Tue, 2 Apr 2019 14:50:54 +0000 (+0200) Subject: factor get_remaining across acitvities X-Git-Tag: v3.22.1~22 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/8f14731685bc7fea43ca95def23ab2031e7a32eb factor get_remaining across acitvities --- diff --git a/src/kernel/activity/ActivityImpl.cpp b/src/kernel/activity/ActivityImpl.cpp index d50f13ccfd..20654870e2 100644 --- a/src/kernel/activity/ActivityImpl.cpp +++ b/src/kernel/activity/ActivityImpl.cpp @@ -20,6 +20,11 @@ ActivityImpl::~ActivityImpl() } } +double ActivityImpl::get_remaining() const +{ + return surf_action_ ? surf_action_->get_remains() : 0; +} + void ActivityImpl::suspend() { if (surf_action_ == nullptr) diff --git a/src/kernel/activity/ActivityImpl.hpp b/src/kernel/activity/ActivityImpl.hpp index 239ef1b829..a81e6ac601 100644 --- a/src/kernel/activity/ActivityImpl.hpp +++ b/src/kernel/activity/ActivityImpl.hpp @@ -34,6 +34,7 @@ public: virtual void post() = 0; // What to do when a simcall terminates virtual void finish() = 0; + virtual double get_remaining() const; // boost::intrusive_ptr support: friend XBT_PUBLIC void intrusive_ptr_add_ref(ActivityImpl* activity); friend XBT_PUBLIC void intrusive_ptr_release(ActivityImpl* activity); diff --git a/src/kernel/activity/CommImpl.cpp b/src/kernel/activity/CommImpl.cpp index a87836256e..73cf3acba0 100644 --- a/src/kernel/activity/CommImpl.cpp +++ b/src/kernel/activity/CommImpl.cpp @@ -134,7 +134,7 @@ XBT_PRIVATE smx_activity_t simcall_HANDLER_comm_irecv( other_comm = std::move(this_synchro); mbox->push(other_comm); } else { - if (other_comm->surf_action_ && other_comm->remains() < 1e-12) { + if (other_comm->surf_action_ && other_comm->get_remaining() < 1e-12) { XBT_DEBUG("comm %p has been already sent, and is finished, destroy it", other_comm.get()); other_comm->state_ = SIMIX_DONE; other_comm->set_type(simgrid::kernel::activity::CommImpl::Type::DONE); @@ -518,12 +518,6 @@ void CommImpl::cancel() } } -/** @brief get the amount remaining from the communication */ -double CommImpl::remains() -{ - return surf_action_->get_remains(); -} - /** @brief This is part of the cleanup process, probably an internal command */ void CommImpl::cleanupSurf() { diff --git a/src/kernel/activity/CommImpl.hpp b/src/kernel/activity/CommImpl.hpp index 7369c983dd..9bda708911 100644 --- a/src/kernel/activity/CommImpl.hpp +++ b/src/kernel/activity/CommImpl.hpp @@ -39,7 +39,6 @@ public: void post() override; void finish() override; void cancel(); - double remains(); CommImpl::Type type_; /* Type of the communication (SIMIX_COMM_SEND or SIMIX_COMM_RECEIVE) */ MailboxImpl* mbox = nullptr; /* Rendez-vous where the comm is queued */ diff --git a/src/kernel/activity/ExecImpl.cpp b/src/kernel/activity/ExecImpl.cpp index 928c959909..476723fcd6 100644 --- a/src/kernel/activity/ExecImpl.cpp +++ b/src/kernel/activity/ExecImpl.cpp @@ -131,11 +131,6 @@ void ExecImpl::cancel() surf_action_->cancel(); } -double ExecImpl::get_remaining() const -{ - return surf_action_ ? surf_action_->get_remains() : 0; -} - double ExecImpl::get_seq_remaining_ratio() { return (surf_action_ == nullptr) ? 0 : surf_action_->get_remains() / surf_action_->get_cost(); diff --git a/src/kernel/activity/ExecImpl.hpp b/src/kernel/activity/ExecImpl.hpp index 7930636ffa..88b25eb3dc 100644 --- a/src/kernel/activity/ExecImpl.hpp +++ b/src/kernel/activity/ExecImpl.hpp @@ -37,7 +37,6 @@ public: ExecImpl& set_hosts(const std::vector& hosts); unsigned int get_host_number() const { return hosts_.size(); } - double get_remaining() const; double get_seq_remaining_ratio(); double get_par_remaining_ratio(); virtual ActivityImpl* migrate(s4u::Host* to); diff --git a/src/kernel/activity/IoImpl.cpp b/src/kernel/activity/IoImpl.cpp index ebabea1abf..6adcc178eb 100644 --- a/src/kernel/activity/IoImpl.cpp +++ b/src/kernel/activity/IoImpl.cpp @@ -75,11 +75,6 @@ void IoImpl::cancel() state_ = SIMIX_CANCELED; } -double IoImpl::get_remaining() -{ - return surf_action_ ? surf_action_->get_remains() : 0; -} - void IoImpl::post() { performed_ioops_ = surf_action_->get_cost(); diff --git a/src/kernel/activity/IoImpl.hpp b/src/kernel/activity/IoImpl.hpp index ed8cf3e3c5..fe74ccd9cc 100644 --- a/src/kernel/activity/IoImpl.hpp +++ b/src/kernel/activity/IoImpl.hpp @@ -31,7 +31,6 @@ public: void post() override; void finish() override; void cancel(); - double get_remaining(); static xbt::signal on_start; static xbt::signal on_completion;