#include "surf_private.h"
#include "surf/surf_resource.h"
#include "maxmin_private.h"
+#include "simgrid/sg_config.h"
surf_model_t surf_cpu_model = NULL;
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu, surf,
"Logging specific to the SURF CPU IMPROVED module");
-
-
static xbt_swag_t
cpu_running_action_set_that_does_not_need_being_checked = NULL;
+/* This function is registered as a callback to sg_platf_new_host() and never called directly */
static void *cpu_create_resource(const char *name, double power_peak,
double power_scale,
tmgr_trace_t power_trace,
{
cpu_Cas01_t cpu = NULL;
- xbt_assert(!surf_cpu_resource_by_name(name),
+ xbt_assert(!surf_cpu_resource_priv(surf_cpu_resource_by_name(name)),
"Host '%s' declared several times in the platform file",
name);
cpu = (cpu_Cas01_t) surf_resource_new(sizeof(s_cpu_Cas01_t),
xbt_lib_set(host_lib, name, SURF_CPU_LEVEL, cpu);
- return cpu;
+ return xbt_lib_get_elm_or_null(host_lib, name);;
}
static surf_action_t cpu_execute(void *cpu, double size)
{
surf_action_cpu_Cas01_t action = NULL;
- cpu_Cas01_t CPU = cpu;
+ cpu_Cas01_t CPU = surf_cpu_resource_priv(cpu);
XBT_IN("(%s,%g)", surf_resource_name(CPU), size);
action =
if (duration > 0)
duration = MAX(duration, MAXMIN_PRECISION);
- XBT_IN("(%s,%g)", surf_resource_name(cpu), duration);
+ XBT_IN("(%s,%g)", surf_resource_name(surf_cpu_resource_priv(cpu)), duration);
action = (surf_action_cpu_Cas01_t) cpu_execute(cpu, 1.0);
// FIXME: sleep variables should not consume 1.0 in lmm_expand
GENERIC_ACTION(action).max_duration = duration;
static e_surf_resource_state_t cpu_get_state(void *cpu)
{
- return ((cpu_Cas01_t) cpu)->state_current;
+ return ((cpu_Cas01_t)surf_cpu_resource_priv(cpu))->state_current;
}
static double cpu_get_speed(void *cpu, double load)
{
- return load * (((cpu_Cas01_t) cpu)->power_peak);
+ return load * ((cpu_Cas01_t)surf_cpu_resource_priv(cpu))->power_peak;
}
static double cpu_get_available_speed(void *cpu)
{
/* number between 0 and 1 */
- return ((cpu_Cas01_t) cpu)->power_scale;
+ return ((cpu_Cas01_t)surf_cpu_resource_priv(cpu))->power_scale;
}
static void cpu_finalize(void)
s_surf_action_t action;
s_surf_action_cpu_Cas01_t comp;
- char *optim = xbt_cfg_get_string(_surf_cfg_set, "cpu/optim");
+ char *optim = xbt_cfg_get_string(_sg_cfg_set, "cpu/optim");
int select =
- xbt_cfg_get_int(_surf_cfg_set, "cpu/maxmin_selective_update");
+ xbt_cfg_get_int(_sg_cfg_set, "cpu/maxmin_selective_update");
surf_cpu_model = surf_model_init();
xbt_assert((select == 1)
||
(xbt_cfg_is_default_value
- (_surf_cfg_set, "cpu/maxmin_selective_update")),
+ (_sg_cfg_set, "cpu/maxmin_selective_update")),
"Disabling selective update while using the lazy update mechanism is dumb!");
} else {
xbt_die("Unsupported optimization (%s) for this model", optim);
surf_cpu_model->extension.cpu.get_speed = cpu_get_speed;
surf_cpu_model->extension.cpu.get_available_speed =
cpu_get_available_speed;
- surf_cpu_model->extension.cpu.create_resource = cpu_create_resource;
surf_cpu_model->extension.cpu.add_traces = cpu_add_traces_cpu;
if (!surf_cpu_model->model_private->maxmin_system) {
void surf_cpu_model_init_Cas01()
{
- char *optim = xbt_cfg_get_string(_surf_cfg_set, "cpu/optim");
+ char *optim = xbt_cfg_get_string(_sg_cfg_set, "cpu/optim");
if (surf_cpu_model)
return;