XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network_gtnets, surf,
"Logging specific to the SURF network GTNetS module");
-//extern routing_t used_routing; // COMMENTED BY DAVID
-extern routing_global_t global_routing; // ADDED BY DAVID
+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;
-
-// COMMENTED BY DAVID
-// xbt_dict_t onelink_routes = used_routing->get_onelink_routes();
+// 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 (#%d), dst (#%d)", ((network_link_GTNETS_t)(link->link_ptr))->id , link->src_id, link->dst_id);
+//
+// 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(used_routing->is_router(link->src_id)){
+// if(global_routing->is_router(link->src)){
// gtnets_add_router(link->src_id);
// }
-// if(used_routing->is_router(link->dst_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 */
action->refcount--;
if (!action->refcount) {
xbt_swag_remove(action, action->state_set);
+#ifdef HAVE_TRACING
+ if (action->category) xbt_free (action->category);
+#endif
free(action);
return 1;
}
trace_sent = action->generic_action.cost;
}
// tracing resource utilization
-<<<<<<< HEAD
- 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);
// 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, (action->generic_action.remains-remain)/delta, now-delta, delta);
+// action->generic_action.data, trace_sent/delta, now-delta, delta);
// }
// }
->>>>>>> I comment all the calls to used_routing, in order to use global routing.
#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); // COMMENTED BY DAVID
- xbt_dynar_t links = global_routing->get_route(src_name, dst_name); // ADDED BY DAVID
+ 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);