#include "cpu_ti.hpp"
#include "trace_mgr_private.h"
#include "xbt/heap.h"
+#include "src/surf/platform.hpp"
#ifndef SURF_MODEL_CPUTI_H_
#define SURF_MODEL_CPUTI_H_
static void cpu_ti_define_callbacks()
{
- sg_platf_postparse_add_cb(simgrid::surf::cpu_add_traces);
+ simgrid::surf::on_postparse.connect([]() {
+ surf_cpu_model_pm->addTraces();
+ });
}
/*********
xbt_heap_free(p_tiActionHeap);
}
-Cpu *CpuTiModel::createCpu(simgrid::Host *host,
+Cpu *CpuTiModel::createCpu(simgrid::s4u::Host *host,
xbt_dynar_t speedPeak,
int pstate,
double speedScale,
tmgr_trace_t speedTrace,
int core,
- e_surf_resource_state_t stateInitial,
+ int initiallyOn,
tmgr_trace_t stateTrace)
{
xbt_assert(core==1,"Multi-core not handled with this model yet");
xbt_assert(xbt_dynar_getfirst_as(speedPeak, double) > 0.0,
"Speed has to be >0.0. Did you forget to specify the mandatory speed attribute?");
CpuTi *cpu = new CpuTi(this, host, speedPeak, pstate, speedScale, speedTrace,
- core, stateInitial, stateTrace);
+ core, initiallyOn, stateTrace);
return cpu;
}
/* connect all traces relative to hosts */
xbt_dict_foreach(trace_connect_list_host_avail, cursor, trace_name, elm) {
tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
- CpuTi *cpu = static_cast<CpuTi*>(sg_host_by_name(elm)->p_cpu);
+ CpuTi *cpu = static_cast<CpuTi*>(sg_host_by_name(elm)->pimpl_cpu);
xbt_assert(cpu, "Host %s undefined", elm);
xbt_assert(trace, "Trace %s undefined", trace_name);
xbt_dict_foreach(trace_connect_list_power, cursor, trace_name, elm) {
tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name);
- CpuTi *cpu = static_cast<CpuTi*>(sg_host_by_name(elm)->p_cpu);
+ CpuTi *cpu = static_cast<CpuTi*>(sg_host_by_name(elm)->pimpl_cpu);
xbt_assert(cpu, "Host %s undefined", elm);
xbt_assert(trace, "Trace %s undefined", trace_name);
/************
* Resource *
************/
-CpuTi::CpuTi(CpuTiModel *model, simgrid::Host *host, xbt_dynar_t speedPeak,
+CpuTi::CpuTi(CpuTiModel *model, simgrid::s4u::Host *host, xbt_dynar_t speedPeak,
int pstate, double speedScale, tmgr_trace_t speedTrace, int core,
- e_surf_resource_state_t stateInitial, tmgr_trace_t stateTrace)
- : Cpu(model, host, NULL, pstate, core, 0, speedScale, stateInitial)
+ int initiallyOn, tmgr_trace_t stateTrace)
+ : Cpu(model, host, NULL, pstate, core, 0, speedScale, initiallyOn)
{
xbt_assert(core==1,"Multi-core not handled by this model yet");
m_core = core;
} else if (event_type == p_stateEvent) {
if (value > 0) {
- if(getState() == SURF_RESOURCE_OFF)
+ if(isOff())
xbt_dynar_push_as(host_that_restart, char*, (char *)getName());
- setState(SURF_RESOURCE_ON);
+ turnOn();
} else {
- setState(SURF_RESOURCE_OFF);
+ turnOff();
/* put all action running on cpu to failed */
for(ActionTiList::iterator it(p_actionSet->begin()), itend(p_actionSet->end())
CpuAction *CpuTi::execute(double size)
{
XBT_IN("(%s,%g)", getName(), size);
- CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), size, getState() != SURF_RESOURCE_ON, this);
+ CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), size, isOff(), this);
p_actionSet->push_back(*action);
duration = MAX(duration, sg_surf_precision);
XBT_IN("(%s,%g)", getName(), duration);
- CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), 1.0, getState() != SURF_RESOURCE_ON, this);
+ CpuTiAction *action = new CpuTiAction(static_cast<CpuTiModel*>(getModel()), 1.0, isOff(), this);
action->m_maxDuration = duration;
action->m_suspended = 2;