return ((cpu_ti_t)surf_cpu_resource_priv(cpu))->state_current;
}
+static void cpu_ti_set_state(void *cpu, e_surf_resource_state_t state)
+{
+ ((cpu_ti_t)surf_cpu_resource_priv(cpu))->state_current = state;
+}
+
static double cpu_ti_get_speed(void *cpu, double load)
{
return load * ((cpu_ti_t)surf_cpu_resource_priv(cpu))->power_peak;
xbt_heap_free(cpu_ti_action_heap);
}
-static void surf_cpu_ti_model_init_internal(surf_model_t cpu_model)
+static surf_model_t surf_cpu_ti_model_init_internal(void)
{
s_surf_action_t action;
s_cpu_ti_t cpu;
- cpu_model = surf_model_init();
+ surf_model_t cpu_model = surf_model_init();
cpu_ti_running_action_set_that_does_not_need_being_checked =
xbt_swag_new(xbt_swag_offset(action, state_hookup));
cpu_model->extension.cpu.sleep = cpu_ti_action_sleep;
cpu_model->extension.cpu.get_state = cpu_ti_get_state;
+ cpu_model->extension.cpu.set_state = cpu_ti_set_state;
cpu_model->extension.cpu.get_speed = cpu_ti_get_speed;
cpu_model->extension.cpu.get_available_speed =
cpu_ti_get_available_speed;
xbt_heap_set_update_callback(cpu_ti_action_heap,
cpu_ti_action_update_index_heap);
+ return cpu_model;
}
-void surf_cpu_model_init_ti(surf_model_t cpu_model)
+surf_model_t surf_cpu_model_init_ti(void)
{
- xbt_assert(!cpu_model,"CPU model already initialized. This should not happen.");
- surf_cpu_ti_model_init_internal(cpu_model);
+ surf_model_t cpu_model = surf_cpu_ti_model_init_internal();
cpu_ti_define_callbacks();
xbt_dynar_push(model_list, &cpu_model);
+
+ return cpu_model;
}