* Wrapper around surf_cpu_integrate_trace_simple() to get
* the cyclic effect.
*
-* \param trace Trace structure.
* \param a Begin of interval
* \param b End of interval
* \return the integrate value. -1 if an error occurs.
/**
* \brief Auxiliary function to solve integral.
* It returns the date when the requested amount of flops is available
- * \param trace Trace structure
* \param a Initial point
* \param amount Amount of flops
* \return The date when amount is available.
* \brief Auxiliary function to update the CPU speed scale.
*
* This function uses the trace structure to return the speed scale at the determined time a.
-* \param trace Trace structure to search the updated speed scale
* \param a Time
* \return CPU speed scale
*/
*
* \param speedTrace CPU availability trace
* \param value Percentage of CPU speed available (useful to fixed tracing)
-* \param spacing Initial spacing
* \return Integration trace structure
*/
CpuTiTgmr::CpuTiTgmr(tmgr_trace_t speedTrace, double value)
xbt_heap_free(tiActionHeap_);
}
-Cpu *CpuTiModel::createCpu(simgrid::s4u::Host *host, xbt_dynar_t speeds, int core)
+Cpu *CpuTiModel::createCpu(simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core)
{
- xbt_assert(core==1,"Multi-core not handled with this model yet");
- xbt_assert(xbt_dynar_getfirst_as(speeds, double) > 0.0,
- "Speed has to be >0.0. Did you forget to specify the mandatory speed attribute?");
- return new CpuTi(this, host, speeds, core);
+ return new CpuTi(this, host, speedPerPstate, core);
}
double CpuTiModel::next_occuring_event(double now)
action->finish();
/* set the remains to 0 due to precision problems when updating the remaining amount */
action->setRemains(0);
- action->setState(SURF_ACTION_DONE);
+ action->setState(Action::State::done);
/* update remaining amount of all actions */
action->cpu_->updateRemainingAmount(surf_get_clock());
}
* Resource *
************/
CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core)
- : Cpu(model, host, NULL, core, 0)
+ : Cpu(model, host, speedPerPstate, core)
{
xbt_assert(core==1,"Multi-core not handled by this model yet");
coresAmount_ = core;
; it != itend ; ++it) {
CpuTiAction *action = &*it;
- if (action->getState() == SURF_ACTION_RUNNING
- || action->getState() == SURF_ACTION_READY
- || action->getState() == SURF_ACTION_NOT_IN_THE_SYSTEM) {
+ if (action->getState() == Action::State::running
+ || action->getState() == Action::State::ready
+ || action->getState() == Action::State::not_in_the_system) {
action->setFinishTime(date);
- action->setState(SURF_ACTION_FAILED);
+ action->setState(Action::State::failed);
if (action->indexHeap_ >= 0) {
CpuTiAction *heap_act = (CpuTiAction*)
xbt_heap_remove(static_cast<CpuTiModel*>(getModel())->tiActionHeap_, action->indexHeap_);
action->setFinishTime(speedIntegratedTrace_->solve(now, total_area));
/* verify which event will happen before (max_duration or finish time) */
if (action->getMaxDuration() != NO_MAX_DURATION &&
- action->getStartTime() + action->getMaxDuration() < action->m_finish)
+ action->getStartTime() + action->getMaxDuration() < action->finishTime_)
min_finish = action->getStartTime() + action->getMaxDuration();
else
- min_finish = action->m_finish;
+ min_finish = action->finishTime_;
} else {
/* put the max duration time on heap */
if (action->getMaxDuration() != NO_MAX_DURATION)
XBT_DEBUG
("Update finish time: Cpu(%s) Action: %p, Start Time: %f Finish Time: %f Max duration %f",
getName(), action, action->getStartTime(),
- action->m_finish,
+ action->finishTime_,
action->getMaxDuration());
}
/* remove from modified cpu */
continue;
/* skip action that are finishing now */
- if (action->m_finish >= 0 && action->m_finish <= now)
+ if (action->finishTime_ >= 0 && action->finishTime_ <= now)
continue;
/* update remaining */
action->updateRemains(area_total / (sumPriority_ * action->getPriority()));
- XBT_DEBUG("Update remaining action(%p) remaining %f", action, action->m_remains);
+ XBT_DEBUG("Update remaining action(%p) remaining %f", action, action->remains_);
}
lastUpdate_ = now;
}
XBT_IN("(%s,%g)", getName(), duration);
CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), 1.0, isOff(), this);
- action->m_maxDuration = duration;
+ action->maxDuration_ = duration;
action->suspended_ = 2;
if (duration == NO_MAX_DURATION) {
/* Move to the *end* of the corresponding action set. This convention
is used to speed up update_resource_state */
action->getStateSet()->erase(action->getStateSet()->iterator_to(*action));
- action->p_stateSet = static_cast<CpuTiModel*>(getModel())->runningActionSetThatDoesNotNeedBeingChecked_;
+ action->stateSet_ = static_cast<CpuTiModel*>(getModel())->runningActionSetThatDoesNotNeedBeingChecked_;
action->getStateSet()->push_back(*action);
}
indexHeap_ = i;
}
-void CpuTiAction::setState(e_surf_action_state_t state)
+void CpuTiAction::setState(Action::State state)
{
CpuAction::setState(state);
cpu_->modified(true);
int CpuTiAction::unref()
{
- m_refcount--;
- if (!m_refcount) {
+ refcount_--;
+ if (!refcount_) {
if (action_hook.is_linked())
getStateSet()->erase(getStateSet()->iterator_to(*this));
/* remove from action_set */
void CpuTiAction::cancel()
{
- this->setState(SURF_ACTION_FAILED);
+ this->setState(Action::State::failed);
xbt_heap_remove(getModel()->getActionHeap(), this->indexHeap_);
cpu_->modified(true);
return;
XBT_IN("(%p,%g)", this, duration);
- m_maxDuration = duration;
+ maxDuration_ = duration;
if (duration >= 0)
min_finish = (getStartTime() + getMaxDuration()) < getFinishTime() ?
void CpuTiAction::setPriority(double priority)
{
XBT_IN("(%p,%g)", this, priority);
- m_priority = priority;
+ priority_ = priority;
cpu_->modified(true);
XBT_OUT();
}
XBT_IN("(%p)", this);
cpu_->updateRemainingAmount(surf_get_clock());
XBT_OUT();
- return m_remains;
+ return remains_;
}
}