Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
merge redundant surf_cpu_state_t and surf_link_state_t into surf_resource_state_t...
[simgrid.git] / src / surf / cpu.c
index ca63f90..a6cfe86 100644 (file)
@@ -7,18 +7,14 @@
 
 #include "surf_private.h"
 
-typedef struct surf_action_cpu_Cas01 {
-  s_surf_action_t generic_action;
-  lmm_variable_t variable;
-  int suspended;
-} s_surf_action_cpu_Cas01_t, *surf_action_cpu_Cas01_t;
+typedef s_surf_action_lmm_t s_surf_action_cpu_Cas01_t, *surf_action_cpu_Cas01_t;
 
 typedef struct cpu_Cas01 {
   s_surf_resource_t generic_resource;
   double power_scale;
   double power_current;
   tmgr_trace_event_t power_event;
-  e_surf_cpu_state_t state_current;
+  e_surf_resource_state_t state_current;
   tmgr_trace_event_t state_event;
   lmm_constraint_t constraint;
 } s_cpu_Cas01_t, *cpu_Cas01_t;
@@ -37,7 +33,7 @@ static xbt_swag_t running_action_set_that_does_not_need_being_checked = NULL;
 static cpu_Cas01_t cpu_new(char *name, double power_scale,
                            double power_initial,
                            tmgr_trace_t power_trace,
-                           e_surf_cpu_state_t state_initial,
+                           e_surf_resource_state_t state_initial,
                            tmgr_trace_t state_trace,
                            xbt_dict_t cpu_properties)
 {
@@ -46,7 +42,7 @@ static cpu_Cas01_t cpu_new(char *name, double power_scale,
               "Host '%s' declared several times in the platform file", name);
   cpu->generic_resource.model = surf_cpu_model;
   cpu->generic_resource.name = name;
-  current_property_set = cpu->generic_resource.properties = cpu_properties;
+  cpu->generic_resource.properties = cpu_properties;
   cpu->power_scale = power_scale;
   xbt_assert0(cpu->power_scale > 0, "Power has to be >0");
   cpu->power_current = power_initial;
@@ -74,7 +70,7 @@ static void parse_cpu_init(void)
   double power_scale = 0.0;
   double power_initial = 0.0;
   tmgr_trace_t power_trace = NULL;
-  e_surf_cpu_state_t state_initial = SURF_CPU_OFF;
+  e_surf_resource_state_t state_initial = SURF_RESOURCE_OFF;
   tmgr_trace_t state_trace = NULL;
 
   power_scale = get_cpu_power(A_surfxml_host_power);
@@ -85,9 +81,9 @@ static void parse_cpu_init(void)
               (A_surfxml_host_state == A_surfxml_host_state_OFF),
               "Invalid state");
   if (A_surfxml_host_state == A_surfxml_host_state_ON)
-    state_initial = SURF_CPU_ON;
+    state_initial = SURF_RESOURCE_ON;
   if (A_surfxml_host_state == A_surfxml_host_state_OFF)
-    state_initial = SURF_CPU_OFF;
+    state_initial = SURF_RESOURCE_OFF;
   surf_parse_get_trace(&state_trace, A_surfxml_host_state_file);
 
   current_property_set = xbt_dict_new();
@@ -189,10 +185,6 @@ static void update_actions_state(double now, double delta)
   surf_action_cpu_Cas01_t action = NULL;
   surf_action_cpu_Cas01_t next_action = NULL;
   xbt_swag_t running_actions = surf_cpu_model->states.running_action_set;
-  /* FIXME: UNUSED
-     xbt_swag_t failed_actions =
-     surf_cpu_model->states.failed_action_set;
-   */
 
   xbt_swag_foreach_safe(action, next_action, running_actions) {
     double_update(&(action->generic_action.remains),
@@ -225,13 +217,13 @@ static void update_resource_state(void *id,
                                 cpu->power_current * cpu->power_scale);
   } else if (event_type == cpu->state_event) {
     if (value > 0)
-      cpu->state_current = SURF_CPU_ON;
+      cpu->state_current = SURF_RESOURCE_ON;
     else {
       lmm_constraint_t cnst = cpu->constraint;
       lmm_variable_t var = NULL;
       lmm_element_t elem = NULL;
 
-      cpu->state_current = SURF_CPU_OFF;
+      cpu->state_current = SURF_RESOURCE_OFF;
 
       while ((var = lmm_get_var_from_cnst(cpu_maxmin_system, cnst, &elem))) {
         surf_action_t action = lmm_variable_id(var);
@@ -258,28 +250,12 @@ static surf_action_t execute(void *cpu, double size)
   cpu_Cas01_t CPU = cpu;
 
   XBT_IN2("(%s,%g)", CPU->generic_resource.name, size);
-  action = xbt_new0(s_surf_action_cpu_Cas01_t, 1);
-
-  action->generic_action.refcount = 1;
-  action->generic_action.cost = size;
-  action->generic_action.remains = size;
-  action->generic_action.priority = 1.0;
-  action->generic_action.max_duration = NO_MAX_DURATION;
-  action->generic_action.start = surf_get_clock();
-  action->generic_action.finish = -1.0;
-  action->generic_action.model_type = surf_cpu_model;
+  action = surf_action_new(sizeof(s_surf_action_cpu_Cas01_t),size,surf_cpu_model,
+      CPU->state_current != SURF_RESOURCE_ON);
+
   action->suspended = 0;        /* Should be useless because of the
                                    calloc but it seems to help valgrind... */
 
-  if (CPU->state_current == SURF_CPU_ON)
-    action->generic_action.state_set =
-      surf_cpu_model->states.running_action_set;
-  else
-    action->generic_action.state_set =
-      surf_cpu_model->states.failed_action_set;
-
-  xbt_swag_insert(action, action->generic_action.state_set);
-
   action->variable = lmm_variable_new(cpu_maxmin_system, action,
                                       action->generic_action.priority,
                                       -1.0, 1);
@@ -360,7 +336,7 @@ static void action_set_priority(surf_action_t action, double priority)
   XBT_OUT;
 }
 
-static e_surf_cpu_state_t get_state(void *cpu)
+static e_surf_resource_state_t get_state(void *cpu)
 {
   return ((cpu_Cas01_t) cpu)->state_current;
 }