X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a2102287f9953ee825e0fce70d3aaa7a2e851493..b362f44b3941a4b07a255240da19066915fbacb3:/src/surf/workstation.c diff --git a/src/surf/workstation.c b/src/surf/workstation.c index fc6a97eb73..5d6120c3f0 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; @@ -293,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, @@ -384,6 +387,31 @@ static surf_action_t execute_parallel_task (int workstation_nb, return (surf_action_t) action; } +/* returns an array of network_link_CM02_t */ +static const void** get_route(void *src, void *dst) { + workstation_CLM03_t workstation_src = (workstation_CLM03_t) src; + workstation_CLM03_t workstation_dst = (workstation_CLM03_t) dst; + return surf_network_resource->extension_public->get_route(workstation_src->network_card, workstation_dst->network_card); +} + +static int get_route_size(void *src, void *dst) { + workstation_CLM03_t workstation_src = (workstation_CLM03_t) src; + workstation_CLM03_t workstation_dst = (workstation_CLM03_t) dst; + return surf_network_resource->extension_public->get_route_size(workstation_src->network_card, workstation_dst->network_card); +} + +static const char *get_link_name(const void *link) { + return surf_network_resource->extension_public->get_link_name(link); +} + +static double get_link_bandwidth(const void *link) { + return surf_network_resource->extension_public->get_link_bandwidth(link); +} + +static double get_link_latency(const void *link) { + return surf_network_resource->extension_public->get_link_latency(link); +} + static void finalize(void) { xbt_dict_free(&workstation_set); @@ -459,10 +487,15 @@ static void surf_workstation_resource_init_internal(void) 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; + surf_workstation_resource->extension_public->get_route_size = get_route_size; + surf_workstation_resource->extension_public->get_link_name = get_link_name; + surf_workstation_resource->extension_public->get_link_bandwidth = get_link_bandwidth; + surf_workstation_resource->extension_public->get_link_latency = get_link_latency; workstation_set = xbt_dict_new(); xbt_assert0(maxmin_system, "surf_init has to be called first!");