XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network_gtnets, surf,
"Logging specific to the SURF network GTNetS module");
-extern routing_t used_routing;
+extern routing_global_t global_routing;
+
double sg_gtnets_jitter=0.0;
int sg_gtnets_jitter_seed=10;
/* Create the gtnets topology based on routing strategy */
static void create_gtnets_topology()
{
- xbt_dict_cursor_t cursor = NULL;
- char *key, *data;
-
- xbt_dict_t onelink_routes = used_routing->get_onelink_routes();
- xbt_assert0(onelink_routes, "Error onelink_routes was not initialized");
-
- DEBUG0("Starting topology generation");
-
- xbt_dict_foreach(onelink_routes, cursor, key, data){
- s_onelink_t link = (s_onelink_t) data;
-
- DEBUG3("Link (#%d), src (#%d), dst (#%d)", ((network_link_GTNETS_t)(link->link_ptr))->id , link->src_id, link->dst_id);
- DEBUG0("Calling one link route");
- if(used_routing->is_router(link->src_id)){
- gtnets_add_router(link->src_id);
- }
- if(used_routing->is_router(link->dst_id)){
- gtnets_add_router(link->dst_id);
- }
- route_onehop_new(link->src_id, link->dst_id, (network_link_GTNETS_t)(link->link_ptr));
- }
-
- xbt_dict_free(&route_table);
- if (XBT_LOG_ISENABLED(surf_network_gtnets, xbt_log_priority_debug)) {
- gtnets_print_topology();
- }
+// xbt_dict_cursor_t cursor = NULL;
+// char *key, *data;
+// xbt_dict_t onelink_routes = global_routing->get_onelink_routes();
+// xbt_assert0(onelink_routes, "Error onelink_routes was not initialized");
+//
+// DEBUG0("Starting topology generation");
+// À refaire plus tard. Il faut prendre la liste des hôtes/routeurs (dans routing)
+// À partir de cette liste, on les numérote.
+// Ensuite, on peut utiliser les id pour refaire les appels GTNets qui suivent.
+
+// xbt_dict_foreach(onelink_routes, cursor, key, data){
+// s_onelink_t link = (s_onelink_t) data;
+//
+// DEBUG3("Link (#%d), src (#%s), dst (#%s)", ((network_link_GTNETS_t)(link->link_ptr))->id , link->src, link->dst);
+// DEBUG0("Calling one link route");
+// if(global_routing->is_router(link->src)){
+// gtnets_add_router(link->src_id);
+// }
+// if(global_routing->is_router(link->dst)){
+// gtnets_add_router(link->dst_id);
+// }
+// route_onehop_new(link->src_id, link->dst_id, (network_link_GTNETS_t)(link->link_ptr));
+// }
+//
+// xbt_dict_free(&route_table);
+// if (XBT_LOG_ISENABLED(surf_network_gtnets, xbt_log_priority_debug)) {
+// gtnets_print_topology();
+// }
}
/* Main XML parsing */
trace_sent = action->generic_action.cost;
}
// tracing resource utilization
- int src = TRACE_surf_gtnets_get_src (action);
- int dst = TRACE_surf_gtnets_get_dst (action);
- if (src != -1 && dst != -1){
- xbt_dynar_t route = used_routing->get_route(src, dst);
- network_link_GTNETS_t link;
- unsigned int i;
- xbt_dynar_foreach(route, i, link) {
- TRACE_surf_link_set_utilization (link->generic_resource.name,
- action->generic_action.data, trace_sent/delta, now-delta, delta);
- }
- }
+// COMMENTED BY DAVID
+// int src = TRACE_surf_gtnets_get_src (action);
+// int dst = TRACE_surf_gtnets_get_dst (action);
+// if (src != -1 && dst != -1){
+// xbt_dynar_t route = used_routing->get_route(src, dst);
+// network_link_GTNETS_t link;
+// unsigned int i;
+// xbt_dynar_foreach(route, i, link) {
+// TRACE_surf_link_set_utilization (link->generic_resource.name,
+// action->generic_action.data, trace_sent/delta, now-delta, delta);
+// }
+// }
#endif
DEBUG1("Sent value returned by GTNetS : %f", sent);
/* Max durations are not supported */
static surf_action_t communicate(const char *src_name, const char *dst_name,
- int src, int dst, double size, double rate)
+ double size, double rate)
{
+ int src,dst;
+
+ // Utiliser le dictionnaire définit dans create_gtnets_topology pour initialiser correctement src et dst
+ src=dst=-1;
surf_action_network_GTNETS_t action = NULL;
xbt_assert0((src >= 0 && dst >= 0), "Either src or dst have invalid id (id<0)");
DEBUG4("Setting flow src %d \"%s\", dst %d \"%s\"", src, src_name, dst, dst_name);
- xbt_dynar_t links = used_routing->get_route(src, dst);
+ xbt_dynar_t links = global_routing->get_route(src_name, dst_name);
route_new(src, dst, links, xbt_dynar_length(links));
action = surf_action_new(sizeof(s_surf_action_network_GTNETS_t), size, surf_network_model, 0);
routing_model_create(sizeof(network_link_GTNETS_t), NULL);
}
+#ifdef HAVE_LATENCY_BOUND_TRACKING
static int get_latency_limited(surf_action_t action){
return 0;
}
+#endif
#ifdef HAVE_GTNETS
void surf_network_model_init_GTNETS(const char *filename)
define_callbacks(filename);
xbt_dynar_push(model_list, &surf_network_model);
+#ifdef HAVE_LATENCY_BOUND_TRACKING
surf_network_model->get_latency_limited = get_latency_limited;
+#endif
if(sg_gtnets_jitter > 0.0){
gtnets_set_jitter(sg_gtnets_jitter);