xbt_assert(core > 0, "Invalid number of cores %d. Must be larger than 0", core);
cpu = new CpuCas01(this, name, power_peak, pstate, power_scale, power_trace, core, state_initial, state_trace, cpu_properties);
+ surf_callback_emit(cpuCreatedCallbacks, cpu);
+ surf_callback_emit(cpuStateChangedCallbacks, cpu, SURF_RESOURCE_ON, state_initial);
sg_host_surfcpu_set(host, cpu);
return cpu;
xbt_dict_t properties)
: Cpu(model, name, properties,
lmm_constraint_new(model->getMaxminSystem(), this, core * powerScale * xbt_dynar_get_as(powerPeak, pstate, double)),
- core, xbt_dynar_get_as(powerPeak, pstate, double), powerScale) {
+ core, xbt_dynar_get_as(powerPeak, pstate, double), powerScale,
+ stateInitial) {
p_powerEvent = NULL;
p_powerPeakList = powerPeak;
m_pstate = pstate;
XBT_DEBUG("CPU create: peak=%f, pstate=%d", m_powerPeak, m_pstate);
m_core = core;
- setState(stateInitial);
if (powerTrace)
p_powerEvent = tmgr_history_add_trace(history, powerTrace, 0.0, 0, this);
************/
Cpu::Cpu(){
- surf_callback_emit(cpuCreatedCallbacks, this);
}
+
Cpu::Cpu(Model *model, const char *name, xbt_dict_t props,
- int core, double powerPeak, double powerScale)
- : Resource(model, name, props)
+ int core, double powerPeak, double powerScale,
+ e_surf_resource_state_t stateInitial)
+ : Resource(model, name, props, stateInitial)
, m_core(core)
, m_powerPeak(powerPeak)
, m_powerScale(powerScale)
, p_constraintCore(NULL)
, p_constraintCoreId(NULL)
{
- surf_callback_emit(cpuCreatedCallbacks, this);
+
}
Cpu::Cpu(Model *model, const char *name, xbt_dict_t props,
- lmm_constraint_t constraint, int core, double powerPeak, double powerScale)
- : Resource(model, name, props, constraint)
+ lmm_constraint_t constraint, int core, double powerPeak,
+ double powerScale, e_surf_resource_state_t stateInitial)
+ : Resource(model, name, props, constraint, stateInitial)
, m_core(core)
, m_powerPeak(powerPeak)
, m_powerScale(powerScale)
{
- surf_callback_emit(cpuCreatedCallbacks, this);
/* At now, we assume that a VM does not have a multicore CPU. */
if (core > 1)
xbt_assert(model == surf_cpu_model_pm);
}
}
+Cpu::Cpu(Model *model, const char *name, xbt_dict_t props,
+ lmm_constraint_t constraint, int core, double powerPeak, double powerScale)
+: Cpu(model, name, props, constraint, core, powerPeak, powerScale, SURF_RESOURCE_ON)
+{}
+
+Cpu::Cpu(Model *model, const char *name, xbt_dict_t props,
+ int core, double powerPeak, double powerScale)
+: Cpu(model, name, props, core, powerPeak, powerScale, SURF_RESOURCE_ON)
+{}
+
Cpu::~Cpu(){
surf_callback_emit(cpuDestructedCallbacks, this);
if (p_constraintCoreId){
* @param powerScale The power scale of this Cpu
*/
Cpu(Model *model, const char *name, xbt_dict_t props,
- lmm_constraint_t constraint, int core, double powerPeak, double powerScale);
+ lmm_constraint_t constraint, int core, double powerPeak, double powerScale,
+ e_surf_resource_state_t stateInitial);
/**
* @brief Cpu constructor
* @param powerPeak The power peak of this Cpu in [TODO]
* @param powerScale The power scale of this Cpu in [TODO]
*/
+ Cpu(Model *model, const char *name, xbt_dict_t props,
+ int core, double powerPeak, double powerScale,
+ e_surf_resource_state_t stateInitial);
+
+ Cpu(Model *model, const char *name, xbt_dict_t props,
+ lmm_constraint_t constraint, int core, double powerPeak, double powerScale);
Cpu(Model *model, const char *name, xbt_dict_t props,
int core, double powerPeak, double powerScale);
"Power has to be >0.0. Did you forget to specify the mandatory power attribute?");
CpuTi *cpu = new CpuTi(this, name, powerPeak, pstate, powerScale, powerTrace,
core, stateInitial, stateTrace, cpuProperties);
+ surf_callback_emit(cpuCreatedCallbacks, cpu);
+ surf_callback_emit(cpuStateChangedCallbacks, cpu, SURF_RESOURCE_ON, stateInitial);
sg_host_surfcpu_set(host, cpu);
return cpu;
}
CpuTi::CpuTi(CpuTiModel *model, const char *name, xbt_dynar_t powerPeak,
int pstate, double powerScale, tmgr_trace_t powerTrace, int core,
e_surf_resource_state_t stateInitial, tmgr_trace_t stateTrace,
- xbt_dict_t properties)
-: Cpu(model, name, properties, core, 0, powerScale)
+ xbt_dict_t properties)
+ : Cpu(model, name, properties, core, 0, powerScale, stateInitial)
{
p_powerEvent = NULL;
- setState(stateInitial);
m_powerScale = powerScale;
m_core = core;
tmgr_trace_t empty_trace;
CpuL07 *cpu = new CpuL07(this, name, cpu_properties,
power_initial, power_scale, power_trace,
core, state_initial, state_trace);
-
+ surf_callback_emit(cpuCreatedCallbacks, cpu);
+ surf_callback_emit(cpuStateChangedCallbacks, cpu, SURF_RESOURCE_ON, state_initial);
sg_host_surfcpu_set(sg_host, cpu);
return cpu;
double power_initial, double power_scale, tmgr_trace_t power_trace,
int core, e_surf_resource_state_t state_initial, tmgr_trace_t state_trace)
: Cpu(model, name, props, lmm_constraint_new(ptask_maxmin_system, this, power_initial * power_scale),
- core, power_initial, power_scale)
+ core, power_initial, power_scale, state_initial)
{
xbt_assert(m_powerScale > 0, "Power has to be >0");
else
p_powerEvent = NULL;
- setState(state_initial);
if (state_trace)
p_stateEvent = tmgr_history_add_trace(history, state_trace, 0.0, 0, this);
}
{}
Resource::Resource(Model *model, const char *name, xbt_dict_t props)
- : p_name(xbt_strdup(name)), p_properties(props), p_model(model)
- , m_running(true), m_stateCurrent(SURF_RESOURCE_ON)
+ : Resource(model, name, props, SURF_RESOURCE_ON)
{}
Resource::Resource(Model *model, const char *name, xbt_dict_t props, lmm_constraint_t constraint)
+ : Resource(model, name, props, constraint, SURF_RESOURCE_ON)
+{}
+
+Resource::Resource(
+ Model *model, const char *name, xbt_dict_t props,
+ lmm_constraint_t constraint, e_surf_resource_state_t stateInit)
: p_name(xbt_strdup(name)), p_properties(props), p_model(model)
- , m_running(true), m_stateCurrent(SURF_RESOURCE_ON), p_constraint(constraint)
+ , m_running(true), m_stateCurrent(stateInit), p_constraint(constraint)
{}
Resource::Resource(Model *model, const char *name, xbt_dict_t props, e_surf_resource_state_t stateInit)
* @param constraint The lmm constraint associated to this Resource if it is part of a LMM component
*/
Resource(Model *model, const char *name, xbt_dict_t props, lmm_constraint_t constraint);
+
+ Resource(Model *model, const char *name, xbt_dict_t props, lmm_constraint_t constraint, e_surf_resource_state_t stateInit);
+
/**
* @brief Resource constructor
*