Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Adding a function to set the max_duration of an action.
authoralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 29 Jun 2005 19:47:14 +0000 (19:47 +0000)
committeralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 29 Jun 2005 19:47:14 +0000 (19:47 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1474 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/include/surf/surf.h
src/surf/cpu.c
src/surf/network.c
src/surf/workstation.c
src/surf/workstation_KCCFLN05.c

index c3bc5c9..9509d2c 100644 (file)
@@ -74,6 +74,7 @@ typedef struct surf_resource_public {
   void (*suspend) (surf_action_t action);
   void (*resume) (surf_action_t action);
   int (*is_suspended) (surf_action_t action);
+  void (*set_max_duration) (surf_action_t action, double duration);
   const char *name;
 } s_surf_resource_public_t, *surf_resource_public_t;
 
index 36774f1..1cb46ba 100644 (file)
@@ -278,6 +278,11 @@ static int action_is_suspended(surf_action_t action)
   return (lmm_get_variable_weight(((surf_action_cpu_Cas01_t) action)->variable) == 0.0);
 }
 
+static void action_set_max_duration(surf_action_t action, double duration)
+{
+  action->max_duration = duration;
+}
+
 static e_surf_cpu_state_t get_state(void *cpu)
 {
   return ((cpu_Cas01_t) cpu)->state_current;
@@ -346,6 +351,7 @@ static void surf_cpu_resource_init_internal(void)
   surf_cpu_resource->common_public->suspend = action_suspend;
   surf_cpu_resource->common_public->resume = action_resume;
   surf_cpu_resource->common_public->is_suspended = action_is_suspended;
+  surf_cpu_resource->common_public->set_max_duration = action_set_max_duration;
 
   surf_cpu_resource->extension_public->execute = execute;
   surf_cpu_resource->extension_public->sleep = action_sleep;
index f9abb9d..4dbad48 100644 (file)
@@ -442,6 +442,11 @@ static int action_is_suspended(surf_action_t action)
   return ((surf_action_network_CM02_t) action)->suspended;
 }
 
+static void action_set_max_duration(surf_action_t action, double duration)
+{
+  action->max_duration = duration;
+}
+
 static void finalize(void)
 {
   int i,j;
@@ -520,6 +525,7 @@ static void surf_network_resource_init_internal(void)
   surf_network_resource->common_public->suspend = action_suspend;
   surf_network_resource->common_public->resume = action_resume;
   surf_network_resource->common_public->is_suspended = action_is_suspended;
+  surf_cpu_resource->common_public->set_max_duration = action_set_max_duration;
 
   surf_network_resource->extension_public->communicate = communicate;
 
index 386b548..6476998 100644 (file)
@@ -172,6 +172,15 @@ static int action_is_suspended(surf_action_t action)
   DIE_IMPOSSIBLE;
 }
 
+static void action_set_max_duration(surf_action_t action, double duration)
+{
+  if(action->resource_type==(surf_resource_t)surf_network_resource) 
+    return surf_network_resource->common_public->set_max_duration(action,duration);
+  if(action->resource_type==(surf_resource_t)surf_cpu_resource) 
+    return surf_cpu_resource->common_public->set_max_duration(action,duration);
+  DIE_IMPOSSIBLE;
+}
+
 static surf_action_t communicate(void *workstation_src,
                                 void *workstation_dst, double size,
                                 double rate)
@@ -255,6 +264,7 @@ static void surf_workstation_resource_init_internal(void)
   surf_workstation_resource->common_public->suspend = action_suspend;
   surf_workstation_resource->common_public->resume = action_resume;
   surf_workstation_resource->common_public->is_suspended = action_is_suspended;
+  surf_workstation_resource->common_public->set_max_duration = action_set_max_duration;
 
   surf_workstation_resource->extension_public->execute = execute;
   surf_workstation_resource->extension_public->sleep = action_sleep;
index 5803d35..bd39c5e 100644 (file)
@@ -526,6 +526,11 @@ static int network_KCCFLN05_action_is_suspended(surf_action_t action)
   return (lmm_get_variable_weight(((surf_action_network_KCCFLN05_t) action)->variable) == 0.0);
 }
 
+static void network_KCCFLN05_action_set_max_duration(surf_action_t action, double duration)
+{
+  action->max_duration = duration;
+}
+
 /***************** CPU ****************/
 static int action_cpu_KCCFLN05_free(surf_action_t action)
 {
@@ -722,6 +727,11 @@ static int cpu_KCCFLN05_action_is_suspended(surf_action_t action)
   return (lmm_get_variable_weight(((surf_action_cpu_KCCFLN05_t) action)->variable) == 0.0);
 }
 
+static void cpu_KCCFLN05_action_set_max_duration(surf_action_t action, double duration)
+{
+  action->max_duration = duration;
+}
+
 /************* workstation ************/
 static void action_change_state(surf_action_t action,
                                e_surf_action_state_t state)
@@ -805,6 +815,16 @@ static int action_is_suspended(surf_action_t action)
   DIE_IMPOSSIBLE;
 }
 
+static void action_set_max_duration(surf_action_t action, double duration)
+{
+  if(action->resource_type==(surf_resource_t)surf_network_resource) 
+    return surf_network_resource->common_public->set_max_duration(action,duration);
+  if(action->resource_type==(surf_resource_t)surf_cpu_resource) 
+    return surf_cpu_resource->common_public->set_max_duration(action,duration);
+  DIE_IMPOSSIBLE;
+}
+
+
 /**************************************/
 /********* Module  creation ***********/
 /**************************************/
@@ -1032,6 +1052,7 @@ static void workstation_KCCFLN05_resource_init_internal(void)
   surf_workstation_resource->common_public->suspend = action_suspend;
   surf_workstation_resource->common_public->resume = action_resume;
   surf_workstation_resource->common_public->is_suspended = action_is_suspended;
+  surf_workstation_resource->common_public->set_max_duration = action_set_max_duration;
 
   surf_workstation_resource->extension_public->execute = execute_KCCFLN05;
 /*FIXME*//*  surf_workstation_resource->extension_public->sleep = action_sleep; */