X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e683f4e829813790c25870ccf9d43a18b8296d2a..d531b19a0d1b2931ce8177bacd0124065c68476f:/src/surf/cpu_cas01.c diff --git a/src/surf/cpu_cas01.c b/src/surf/cpu_cas01.c index b427a5c839..f704612a5c 100644 --- a/src/surf/cpu_cas01.c +++ b/src/surf/cpu_cas01.c @@ -7,6 +7,7 @@ #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; @@ -36,12 +37,11 @@ typedef struct cpu_Cas01 { 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, @@ -52,7 +52,7 @@ static void *cpu_create_resource(const char *name, double power_peak, { 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), @@ -79,7 +79,7 @@ static void *cpu_create_resource(const char *name, double power_peak, xbt_lib_set(host_lib, name, SURF_CPU_LEVEL, cpu); - return cpu; + return xbt_lib_get_elm_or_null(host_lib, name);; } @@ -227,7 +227,7 @@ static void cpu_update_resource_state(void *id, 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 = @@ -260,7 +260,7 @@ static surf_action_t cpu_action_sleep(void *cpu, double duration) 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; @@ -290,18 +290,24 @@ static surf_action_t cpu_action_sleep(void *cpu, double 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 int cpu_get_core(void *cpu) +{ + return ((cpu_Cas01_t)surf_cpu_resource_priv(cpu))->core; } + 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) @@ -325,9 +331,9 @@ static void surf_cpu_model_init_internal() 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_boolean(_sg_cfg_set, "cpu/maxmin_selective_update"); surf_cpu_model = surf_model_init(); @@ -340,7 +346,7 @@ static void surf_cpu_model_init_internal() 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); @@ -388,10 +394,10 @@ static void surf_cpu_model_init_internal() surf_cpu_model->extension.cpu.sleep = cpu_action_sleep; surf_cpu_model->extension.cpu.get_state = cpu_get_state; + surf_cpu_model->extension.cpu.get_core = cpu_get_core; 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) { @@ -425,7 +431,7 @@ static void surf_cpu_model_init_internal() 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;