From: alegrand Date: Wed, 29 Jun 2005 19:47:14 +0000 (+0000) Subject: Adding a function to set the max_duration of an action. X-Git-Tag: v3.3~3881 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/6c68cb2fa6012d3067edcad0b6164dc95c4ed9be Adding a function to set the max_duration of an action. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1474 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index c3bc5c984f..9509d2c78b 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -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; diff --git a/src/surf/cpu.c b/src/surf/cpu.c index 36774f132a..1cb46babc1 100644 --- a/src/surf/cpu.c +++ b/src/surf/cpu.c @@ -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; diff --git a/src/surf/network.c b/src/surf/network.c index f9abb9de5b..4dbad48dd5 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -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; diff --git a/src/surf/workstation.c b/src/surf/workstation.c index 386b548bdd..647699856c 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -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; diff --git a/src/surf/workstation_KCCFLN05.c b/src/surf/workstation_KCCFLN05.c index 5803d35988..bd39c5e5f2 100644 --- a/src/surf/workstation_KCCFLN05.c +++ b/src/surf/workstation_KCCFLN05.c @@ -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; */