#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;
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,
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);
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!");