X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9189fe94c14ef9e31142d1603a1979ea7e731a0a..04b62daf10d4a89e8a74ec793403183009da153b:/src/surf/workstation.c diff --git a/src/surf/workstation.c b/src/surf/workstation.c index b4603c1988..2c0e553bd2 100644 --- a/src/surf/workstation.c +++ b/src/surf/workstation.c @@ -11,9 +11,6 @@ #include "cpu_private.h" #include "network_private.h" -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(workstation, surf, - "Logging specific to the SURF workstation module"); - surf_workstation_resource_t surf_workstation_resource = NULL; xbt_dict_t workstation_set = NULL; @@ -108,7 +105,7 @@ static void action_use(surf_action_t action) else if(action->resource_type==(surf_resource_t)surf_cpu_resource) surf_cpu_resource->common_public->action_use(action); else if(action->resource_type==(surf_resource_t)surf_workstation_resource) - return parallel_action_use(action); + parallel_action_use(action); else DIE_IMPOSSIBLE; return; } @@ -120,7 +117,7 @@ static void action_cancel(surf_action_t action) else if(action->resource_type==(surf_resource_t)surf_cpu_resource) surf_cpu_resource->common_public->action_cancel(action); else if(action->resource_type==(surf_resource_t)surf_workstation_resource) - return parallel_action_use(action); + parallel_action_use(action); else DIE_IMPOSSIBLE; return; } @@ -262,6 +259,15 @@ static void action_set_max_duration(surf_action_t action, double duration) surf_cpu_resource->common_public->set_max_duration(action,duration); else DIE_IMPOSSIBLE; } + +static void action_set_priority(surf_action_t action, double priority) +{ + if(action->resource_type==(surf_resource_t)surf_network_resource) + surf_network_resource->common_public->set_priority(action,priority); + else if(action->resource_type==(surf_resource_t)surf_cpu_resource) + surf_cpu_resource->common_public->set_priority(action,priority); + else DIE_IMPOSSIBLE; +} static surf_action_t communicate(void *workstation_src, void *workstation_dst, double size, @@ -284,6 +290,12 @@ static double get_speed(void *workstation, double load) get_speed(((workstation_CLM03_t) workstation)->cpu, load); } +static double get_available_speed(void *workstation) +{ + return surf_cpu_resource->extension_public-> + get_available_speed(((workstation_CLM03_t) workstation)->cpu); +} + static surf_action_t execute_parallel_task (int workstation_nb, void **workstation_list, double *computation_amount, @@ -375,6 +387,12 @@ static surf_action_t execute_parallel_task (int workstation_nb, return (surf_action_t) action; } +static void* get_route(void *src, void *dst) { + /* TODO */ + + return NULL; +} + static void finalize(void) { xbt_dict_free(&workstation_set); @@ -444,14 +462,17 @@ static void surf_workstation_resource_init_internal(void) 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->common_public->set_priority = action_set_priority; surf_workstation_resource->extension_public->execute = execute; surf_workstation_resource->extension_public->sleep = action_sleep; surf_workstation_resource->extension_public->get_state = get_state; surf_workstation_resource->extension_public->get_speed = get_speed; + surf_workstation_resource->extension_public->get_available_speed = get_available_speed; surf_workstation_resource->extension_public->communicate = communicate; surf_workstation_resource->extension_public->execute_parallel_task = execute_parallel_task; + surf_workstation_resource->extension_public->get_route = get_route; workstation_set = xbt_dict_new();