-/* Copyright (c) 2013-2014. The SimGrid Team.
+/* Copyright (c) 2013-2015. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "cpu_interface.hpp"
+#include "plugins/energy.hpp"
XBT_LOG_EXTERNAL_CATEGORY(surf_kernel);
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu, surf,
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);
}
+
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){
Resource::setState(state);
surf_callback_emit(cpuStateChangedCallbacks, this, old, state);
}
+
/**********
* Action *
**********/