* under the terms of the license (GNU LGPL) which comes with this package. */
#include "cpu_ti.hpp"
+#include "src/surf/surf_interface.hpp"
#include "src/surf/trace_mgr.hpp"
-#include "xbt/utility.hpp"
-#include <algorithm>
+#include "surf/surf.hpp"
#ifndef SURF_MODEL_CPUTI_H_
#define SURF_MODEL_CPUTI_H_
}
/* get the min next event if heap not empty */
- if (not actionHeapIsEmpty())
- min_action_duration = actionHeapTopDate() - now;
+ if (not get_action_heap().empty())
+ min_action_duration = get_action_heap().top_date() - now;
XBT_DEBUG("Share resources, min next event date: %f", min_action_duration);
void CpuTiModel::update_actions_state(double now, double /*delta*/)
{
- while (not actionHeapIsEmpty() && actionHeapTopDate() <= now) {
- CpuTiAction* action = static_cast<CpuTiAction*>(actionHeapPop());
+ while (not get_action_heap().empty() && double_equals(get_action_heap().top_date(), now, sg_surf_precision)) {
+ CpuTiAction* action = static_cast<CpuTiAction*>(get_action_heap().pop());
XBT_DEBUG("Action %p: finish", action);
action->finish(kernel::resource::Action::State::done);
/* update remaining amount of all actions */
} else if (event == stateEvent_) {
if (value > 0) {
- if(isOff())
+ if (is_off())
host_that_restart.push_back(getHost());
- turnOn();
+ turn_on();
} else {
- turnOff();
+ turn_off();
double date = surf_get_clock();
/* put all action running on cpu to failed */
action.get_state() == kernel::resource::Action::State::not_in_the_system) {
action.set_finish_time(date);
action.set_state(kernel::resource::Action::State::failed);
- action.heapRemove();
+ get_model()->get_action_heap().remove(&action);
}
}
}
}
/* add in action heap */
if (min_finish > NO_MAX_DURATION)
- action.heapUpdate(min_finish, kernel::resource::Action::Type::NOTSET);
+ get_model()->get_action_heap().update(&action, min_finish, kernel::resource::ActionHeap::Type::unset);
else
- action.heapRemove();
+ get_model()->get_action_heap().remove(&action);
- XBT_DEBUG("Update finish time: Cpu(%s) Action: %p, Start Time: %f Finish Time: %f Max duration %f", getCname(),
+ XBT_DEBUG("Update finish time: Cpu(%s) Action: %p, Start Time: %f Finish Time: %f Max duration %f", get_cname(),
&action, action.get_start_time(), action.get_finish_time(), action.get_max_duration());
}
/* remove from modified cpu */
XBT_DEBUG("Flops total: %f, Last update %f", area_total, last_update_);
for (CpuTiAction& action : action_set_) {
/* action not running, skip it */
- if (action.get_state_set() != model()->get_running_action_set())
+ if (action.get_state_set() != get_model()->get_running_action_set())
continue;
/* bogus priority, skip it */
CpuAction *CpuTi::execution_start(double size)
{
- XBT_IN("(%s,%g)", getCname(), size);
- CpuTiAction* action = new CpuTiAction(static_cast<CpuTiModel*>(model()), size, isOff(), this);
+ XBT_IN("(%s,%g)", get_cname(), size);
+ CpuTiAction* action = new CpuTiAction(static_cast<CpuTiModel*>(get_model()), size, is_off(), this);
action_set_.push_back(*action);
if (duration > 0)
duration = std::max(duration, sg_surf_precision);
- XBT_IN("(%s,%g)", getCname(), duration);
- CpuTiAction* action = new CpuTiAction(static_cast<CpuTiModel*>(model()), 1.0, isOff(), this);
+ XBT_IN("(%s,%g)", get_cname(), duration);
+ CpuTiAction* action = new CpuTiAction(static_cast<CpuTiModel*>(get_model()), 1.0, is_off(), this);
action->set_max_duration(duration);
action->suspended_ = kernel::resource::Action::SuspendStates::sleeping;
if (duration == NO_MAX_DURATION) {
/* Move to the *end* of the corresponding action set. This convention is used to speed up update_resource_state */
simgrid::xbt::intrusive_erase(*action->get_state_set(), *action);
- action->state_set_ = &static_cast<CpuTiModel*>(model())->runningActionSetThatDoesNotNeedBeingChecked_;
+ action->state_set_ = &static_cast<CpuTiModel*>(get_model())->runningActionSetThatDoesNotNeedBeingChecked_;
action->get_state_set()->push_back(*action);
}
void CpuTi::set_modified(bool modified)
{
- CpuTiList& modifiedCpu = static_cast<CpuTiModel*>(model())->modified_cpus_;
+ CpuTiList& modifiedCpu = static_cast<CpuTiModel*>(get_model())->modified_cpus_;
if (modified) {
if (not cpu_ti_hook.is_linked()) {
modifiedCpu.push_back(*this);
if (action_ti_hook.is_linked())
simgrid::xbt::intrusive_erase(cpu_->action_set_, *this);
/* remove from heap */
- heapRemove();
+ get_model()->get_action_heap().remove(this);
cpu_->set_modified(true);
}
void CpuTiAction::cancel()
{
this->set_state(Action::State::failed);
- heapRemove();
+ get_model()->get_action_heap().remove(this);
cpu_->set_modified(true);
}
XBT_IN("(%p)", this);
if (suspended_ != Action::SuspendStates::sleeping) {
suspended_ = Action::SuspendStates::suspended;
- heapRemove();
+ get_model()->get_action_heap().remove(this);
cpu_->set_modified(true);
}
XBT_OUT();
min_finish = get_finish_time();
/* add in action heap */
- heapUpdate(min_finish, Action::Type::NOTSET);
+ get_model()->get_action_heap().update(this, min_finish, kernel::resource::ActionHeap::Type::unset);
XBT_OUT();
}