surf_callback(void, Cpu*, e_surf_resource_state_t, e_surf_resource_state_t) cpuStateChangedCallbacks;
surf_callback(void, CpuAction*, e_surf_action_state_t, e_surf_action_state_t) cpuActionStateChangedCallbacks;
-void cpu_parse_init(sg_platf_host_cbarg_t host){
- surf_cpu_model_pm->createCpu(
- host->id,
- host->power_peak,
- host->pstate,
- host->power_scale,
- host->power_trace,
- host->core_amount,
- host->initial_state,
- host->state_trace,
- host->properties);
-}
-
void cpu_add_traces(){
surf_cpu_model_pm->addTraces();
}
************/
Cpu::Cpu(){
- surf_callback_emit(cpuCreatedCallbacks, this);
- physCpu = NULL;
}
+
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);
- physCpu = NULL;
+
}
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);
p_constraintCore[i] = lmm_constraint_new(model->getMaxminSystem(), p_constraintCoreId[i], m_powerScale * m_powerPeak);
}
}
- physCpu = NULL;
}
+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){
surf_callback_emit(cpuStateChangedCallbacks, this, old, state);
}
-void Cpu::setVirtual(Cpu *physCpu)
-{
- if (!surf_energy)
- return;
- this->physCpu = physCpu;
- XBT_DEBUG("The CPU is virtual so associate the cpu energy to the physical cpu instead of creating a new one");
- std::map<Cpu*, CpuEnergy*>::iterator cpu_energy_it = surf_energy->find(physCpu);
- xbt_assert(cpu_energy_it != surf_energy->end(), "The cpu is not in surf_energy.");
- (*surf_energy)[this] = cpu_energy_it->second;
-}
-
-Cpu* Cpu::isVirtual(void)
-{
- return physCpu;
-}
-
/**********
* Action *
**********/