#include <xbt/dynar.h>
#include "cpu_interface.hpp"
-#include "plugins/energy.hpp"
#include "src/instr/instr_private.h" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals
XBT_LOG_EXTERNAL_CATEGORY(surf_kernel);
//without losing the event ascending order (considering all CPU's)
double smaller = -1;
ActionList *actionSet = getRunningActionSet();
- for(ActionList::iterator it(actionSet->begin()), itend(actionSet->end())
- ; it != itend ; ++it) {
+ ActionList::iterator it(actionSet->begin());
+ ActionList::iterator itend(actionSet->end());
+ for (; it != itend; ++it) {
CpuAction *action = static_cast<CpuAction*>(&*it);
- if (smaller < 0) {
- smaller = action->getLastUpdate();
- continue;
- }
- if (action->getLastUpdate() < smaller) {
- smaller = action->getLastUpdate();
- }
+ if (smaller < 0 || action->getLastUpdate() < smaller)
+ smaller = action->getLastUpdate();
}
if (smaller > 0) {
TRACE_last_timestamp_to_dump = smaller;
{
CpuAction *action = nullptr;
ActionList *running_actions = getRunningActionSet();
-
- for(ActionList::iterator it(running_actions->begin()), itNext=it, itend(running_actions->end())
- ; it != itend ; it=itNext) {
+ ActionList::iterator it(running_actions->begin());
+ ActionList::iterator itNext = it;
+ ActionList::iterator itend(running_actions->end());
+ for (; it != itend; it = itNext) {
++itNext;
action = static_cast<CpuAction*>(&*it);
if (TRACE_is_enabled()) {
action->updateRemains(lmm_variable_getvalue(action->getVariable()) * delta);
-
if (action->getMaxDuration() != NO_MAX_DURATION)
action->updateMaxDuration(delta);
-
- if ((action->getRemainsNoUpdate() <= 0) &&
- (lmm_get_variable_weight(action->getVariable()) > 0)) {
- action->finish();
- action->setState(Action::State::done);
- } else if ((action->getMaxDuration() != NO_MAX_DURATION) &&
- (action->getMaxDuration() <= 0)) {
+ if (((action->getRemainsNoUpdate() <= 0) && (lmm_get_variable_weight(action->getVariable()) > 0)) ||
+ ((action->getMaxDuration() != NO_MAX_DURATION) && (action->getMaxDuration() <= 0))) {
action->finish();
action->setState(Action::State::done);
}
Cpu::~Cpu() = default;
-double Cpu::getPstateSpeedCurrent()
-{
- return speed_.peak;
-}
-
int Cpu::getNbPStates()
{
return speedPerPstate_.size();
void Cpu::onSpeedChange() {
TRACE_surf_host_set_speed(surf_get_clock(), cname(), coresAmount_ * speed_.scale * speed_.peak);
+ s4u::Host::onSpeedChange(*host_);
}
int Cpu::coreCount()
{
xbt_assert(stateEvent_ == nullptr, "Cannot set a second state trace to Host %s", host_->cname());
- stateEvent_ = future_evt_set->add_trace(trace, 0.0, this);
+ stateEvent_ = future_evt_set->add_trace(trace, this);
}
void Cpu::setSpeedTrace(tmgr_trace_t trace)
{
xbt_assert(speed_.event == nullptr, "Cannot set a second speed trace to Host %s", host_->cname());
- speed_.event = future_evt_set->add_trace(trace, 0.0, this);
+ speed_.event = future_evt_set->add_trace(trace, this);
}
Action::setState(state);
onStateChange(this, previous);
}
+/** @brief returns a list of all CPUs that this action is using */
std::list<Cpu*> CpuAction::cpus() {
std::list<Cpu*> retlist;
lmm_system_t sys = getModel()->getMaxminSystem();