X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f95d001733819381a8b927263af8925c6cb581c4..80a26f28c70233093bcb877e7a3e38b5cdca6091:/src/surf/surf_interface.cpp diff --git a/src/surf/surf_interface.cpp b/src/surf/surf_interface.cpp index df9b6b136b..02dfd42156 100644 --- a/src/surf/surf_interface.cpp +++ b/src/surf/surf_interface.cpp @@ -8,8 +8,10 @@ #include "simgrid/s4u/Engine.hpp" #include "simgrid/sg_config.h" #include "src/instr/instr_private.hpp" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals +#include "src/kernel/lmm/maxmin.hpp" // Constraint #include "src/kernel/routing/NetPoint.hpp" #include "src/surf/HostImpl.hpp" +#include "xbt/utility.hpp" #include #include @@ -319,7 +321,7 @@ void surf_exit() { TRACE_end(); /* Just in case it was not called by the upper layer (or there is no upper layer) */ - sg_host_exit(); + simgrid::s4u::Engine::shutdown(); sg_link_exit(); for (auto const& e : storage_types) { simgrid::surf::StorageType* stype = e.second; @@ -344,7 +346,6 @@ void surf_exit() tmgr_finalize(); sg_platf_exit(); - simgrid::s4u::Engine::shutdown(); NOW = 0; /* Just in case the user plans to restart the simulation afterward */ } @@ -374,6 +375,8 @@ Model::~Model(){ delete runningActionSet_; delete failedActionSet_; delete doneActionSet_; + delete modifiedSet_; + delete maxminSystem_; } Action* Model::actionHeapPop() @@ -416,7 +419,7 @@ double Model::nextOccuringEventLazy(double now) action->updateRemainingLazy(now); double min = -1; - double share = lmm_variable_getvalue(action->getVariable()); + double share = action->getVariable()->get_value(); if (share > 0) { double time_to_completion; @@ -464,22 +467,21 @@ double Model::nextOccuringEventFull(double /*now*/) { double min = -1; - for (auto it(getRunningActionSet()->begin()); it != getRunningActionSet()->end(); ++it) { - Action *action = &*it; - double value = lmm_variable_getvalue(action->getVariable()); + for (Action& action : *getRunningActionSet()) { + double value = action.getVariable()->get_value(); if (value > 0) { - if (action->getRemains() > 0) - value = action->getRemainsNoUpdate() / value; + if (action.getRemains() > 0) + value = action.getRemainsNoUpdate() / value; else value = 0.0; if (min < 0 || value < min) { min = value; - XBT_DEBUG("Updating min (value) with %p: %f", action, min); + XBT_DEBUG("Updating min (value) with %p: %f", &action, min); } } - if ((action->getMaxDuration() >= 0) && (min<0 || action->getMaxDuration() < min)) { - min = action->getMaxDuration(); - XBT_DEBUG("Updating min (duration) with %p: %f", action, min); + if ((action.getMaxDuration() >= 0) && (min < 0 || action.getMaxDuration() < min)) { + min = action.getMaxDuration(); + XBT_DEBUG("Updating min (duration) with %p: %f", &action, min); } } XBT_DEBUG("min value : %f", min); @@ -540,6 +542,11 @@ void Resource::turnOff() isOn_ = false; } +double Resource::getLoad() +{ + return constraint_->get_usage(); +} + Model* Resource::model() const { return model_; @@ -608,7 +615,7 @@ void Action::finish(Action::State state) setState(state); } -Action::State Action::getState() +Action::State Action::getState() const { if (stateSet_ == model_->getReadyActionSet()) return Action::State::ready; @@ -623,7 +630,7 @@ Action::State Action::getState() void Action::setState(Action::State state) { - stateSet_->erase(stateSet_->iterator_to(*this)); + simgrid::xbt::intrusive_erase(*stateSet_, *this); switch (state) { case Action::State::ready: stateSet_ = model_->getReadyActionSet(); @@ -645,37 +652,22 @@ void Action::setState(Action::State state) stateSet_->push_back(*this); } -double Action::getBound() +double Action::getBound() const { - return (variable_) ? lmm_variable_getbound(variable_) : 0; + return variable_ ? variable_->get_bound() : 0; } void Action::setBound(double bound) { XBT_IN("(%p,%g)", this, bound); if (variable_) - lmm_update_variable_bound(getModel()->getMaxminSystem(), variable_, bound); + getModel()->getMaxminSystem()->update_variable_bound(variable_, bound); if (getModel()->getUpdateMechanism() == UM_LAZY && getLastUpdate() != surf_get_clock()) heapRemove(getModel()->getActionHeap()); XBT_OUT(); } -double Action::getStartTime() -{ - return start_; -} - -double Action::getFinishTime() -{ - return finishTime_; -} - -void Action::setData(void* data) -{ - data_ = data; -} - void Action::setCategory(const char *category) { category_ = xbt_strdup(category); @@ -696,7 +688,7 @@ void Action::setSharingWeight(double weight) { XBT_IN("(%p,%g)", this, weight); sharingWeight_ = weight; - lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), weight); + getModel()->getMaxminSystem()->update_variable_weight(getVariable(), weight); if (getModel()->getUpdateMechanism() == UM_LAZY) heapRemove(getModel()->getActionHeap()); @@ -707,7 +699,7 @@ void Action::cancel(){ setState(Action::State::failed); if (getModel()->getUpdateMechanism() == UM_LAZY) { if (action_lmm_hook.is_linked()) - getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this)); + simgrid::xbt::intrusive_erase(*getModel()->getModifiedSet(), *this); heapRemove(getModel()->getActionHeap()); } } @@ -716,14 +708,14 @@ int Action::unref(){ refcount_--; if (not refcount_) { if (action_hook.is_linked()) - stateSet_->erase(stateSet_->iterator_to(*this)); + simgrid::xbt::intrusive_erase(*stateSet_, *this); if (getVariable()) - lmm_variable_free(getModel()->getMaxminSystem(), getVariable()); + getModel()->getMaxminSystem()->variable_free(getVariable()); if (getModel()->getUpdateMechanism() == UM_LAZY) { /* remove from heap */ heapRemove(getModel()->getActionHeap()); if (action_lmm_hook.is_linked()) - getModel()->getModifiedSet()->erase(getModel()->getModifiedSet()->iterator_to(*this)); + simgrid::xbt::intrusive_erase(*getModel()->getModifiedSet(), *this); } delete this; return 1; @@ -735,7 +727,7 @@ void Action::suspend() { XBT_IN("(%p)", this); if (suspended_ != 2) { - lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), 0.0); + getModel()->getMaxminSystem()->update_variable_weight(getVariable(), 0.0); if (getModel()->getUpdateMechanism() == UM_LAZY){ heapRemove(getModel()->getActionHeap()); if (getModel()->getUpdateMechanism() == UM_LAZY && stateSet_ == getModel()->getRunningActionSet() && @@ -753,7 +745,7 @@ void Action::resume() { XBT_IN("(%p)", this); if (suspended_ != 2) { - lmm_update_variable_weight(getModel()->getMaxminSystem(), getVariable(), getPriority()); + getModel()->getMaxminSystem()->update_variable_weight(getVariable(), getPriority()); suspended_ = 0; if (getModel()->getUpdateMechanism() == UM_LAZY) heapRemove(getModel()->getActionHeap()); @@ -807,10 +799,5 @@ double Action::getRemains() return remains_; } -double Action::getRemainsNoUpdate() -{ - return remains_; -} - } }