From dbb6a5398ebdb917f1de3acc0d16cd83cd23de71 Mon Sep 17 00:00:00 2001 From: navarro Date: Tue, 20 Mar 2012 15:19:50 +0100 Subject: [PATCH 1/1] Fix compilation with tracing and new network_element_t --- include/instr/instr.h | 12 ++++++------ src/instr/instr_interface.c | 16 ++++++++-------- src/instr/instr_paje_containers.c | 23 +++++++++++++++++++++++ src/instr/instr_private.h | 1 + src/instr/instr_routing.c | 24 ++++++++++++++++-------- src/surf/network_ns3.c | 9 ++++----- src/surf/network_ns3_private.h | 5 ++--- 7 files changed, 60 insertions(+), 30 deletions(-) diff --git a/include/instr/instr.h b/include/instr/instr.h index 7a7669260c..2467a46ef0 100644 --- a/include/instr/instr.h +++ b/include/instr/instr.h @@ -54,12 +54,12 @@ XBT_PUBLIC(void) TRACE_link_variable_add_with_time (double time, const char *lin XBT_PUBLIC(void) TRACE_link_variable_sub_with_time (double time, const char *link, const char *variable, double value); /* for link variables, but with src and dst used for get_route */ -XBT_PUBLIC(void) TRACE_link_srcdst_variable_set (const char *src, const char *dst, const char *variable, double value); -XBT_PUBLIC(void) TRACE_link_srcdst_variable_add (const char *src, const char *dst, const char *variable, double value); -XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub (const char *src, const char *dst, const char *variable, double value); -XBT_PUBLIC(void) TRACE_link_srcdst_variable_set_with_time (double time, const char *src, const char *dst, const char *variable, double value); -XBT_PUBLIC(void) TRACE_link_srcdst_variable_add_with_time (double time, const char *src, const char *dst, const char *variable, double value); -XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub_with_time (double time, const char *src, const char *dst, const char *variable, double value); +XBT_PUBLIC(void) TRACE_link_srcdst_variable_set (void *src, void *dst, const char *variable, double value); +XBT_PUBLIC(void) TRACE_link_srcdst_variable_add (void *src, void *dst, const char *variable, double value); +XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub (void *src, void *dst, const char *variable, double value); +XBT_PUBLIC(void) TRACE_link_srcdst_variable_set_with_time (double time, void *src, void *dst, const char *variable, double value); +XBT_PUBLIC(void) TRACE_link_srcdst_variable_add_with_time (double time, void *src, void *dst, const char *variable, double value); +XBT_PUBLIC(void) TRACE_link_srcdst_variable_sub_with_time (double time, void *src, void *dst, const char *variable, double value); #else /* HAVE_TRACING */ diff --git a/src/instr/instr_interface.c b/src/instr/instr_interface.c index 13c3e39975..2ff128da1f 100644 --- a/src/instr/instr_interface.c +++ b/src/instr/instr_interface.c @@ -137,8 +137,8 @@ static void instr_user_variable(double time, } static void instr_user_srcdst_variable(double time, - const char *src, - const char *dst, + void *src, + void *dst, const char *variable, const char *father_type, double value, @@ -262,32 +262,32 @@ void TRACE_link_variable_sub_with_time (double time, const char *link, const cha } /* for link variables, but with src and dst used for get_route */ -void TRACE_link_srcdst_variable_set (const char *src, const char *dst, const char *variable, double value) +void TRACE_link_srcdst_variable_set (void *src, void *dst, const char *variable, double value) { TRACE_link_srcdst_variable_set_with_time (MSG_get_clock(), src, dst, variable, value); } -void TRACE_link_srcdst_variable_add (const char *src, const char *dst, const char *variable, double value) +void TRACE_link_srcdst_variable_add (void *src, void *dst, const char *variable, double value) { TRACE_link_srcdst_variable_add_with_time (MSG_get_clock(), src, dst, variable, value); } -void TRACE_link_srcdst_variable_sub (const char *src, const char *dst, const char *variable, double value) +void TRACE_link_srcdst_variable_sub (void *src, void *dst, const char *variable, double value) { TRACE_link_srcdst_variable_sub_with_time (MSG_get_clock(), src, dst, variable, value); } -void TRACE_link_srcdst_variable_set_with_time (double time, const char *src, const char *dst, const char *variable, double value) +void TRACE_link_srcdst_variable_set_with_time (double time, void *src, void *dst, const char *variable, double value) { instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_SET); } -void TRACE_link_srcdst_variable_add_with_time (double time, const char *src, const char *dst, const char *variable, double value) +void TRACE_link_srcdst_variable_add_with_time (double time, void *src, void *dst, const char *variable, double value) { instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_ADD); } -void TRACE_link_srcdst_variable_sub_with_time (double time, const char *src, const char *dst, const char *variable, double value) +void TRACE_link_srcdst_variable_sub_with_time (double time, void *src, void *dst, const char *variable, double value) { instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_SUB); } diff --git a/src/instr/instr_paje_containers.c b/src/instr/instr_paje_containers.c index b1d2563756..526db8a169 100644 --- a/src/instr/instr_paje_containers.c +++ b/src/instr/instr_paje_containers.c @@ -54,6 +54,26 @@ container_t PJ_container_new (const char *name, e_container_types kind, containe new->name = xbt_strdup (name); // name of the container new->id = xbt_strdup (id_str); // id (or alias) of the container new->father = father; + + //Search for network_element_t + switch (kind){ + case INSTR_HOST: + new->net_elm = xbt_lib_get_or_null(host_lib,name,ROUTING_HOST_LEVEL); + if(!new->net_elm) xbt_die("Element '%s' not found",name); + break; + case INSTR_ROUTER: + new->net_elm = xbt_lib_get_or_null(as_router_lib,name,ROUTING_ASR_LEVEL); + if(!new->net_elm) xbt_die("Element '%s' not found",name); + break; + case INSTR_AS: + new->net_elm = xbt_lib_get_or_null(as_router_lib,name,ROUTING_ASR_LEVEL); + if(!new->net_elm) xbt_die("Element '%s' not found",name); + break; + default: + new->net_elm = NULL; + break; + } + // level depends on level of father if (new->father){ new->level = new->father->level+1; @@ -104,12 +124,15 @@ container_t PJ_container_new (const char *name, e_container_types kind, containe if (xbt_dict_get_or_null(allContainers, new->name) != NULL){ THROWF(tracing_error, 1, "container %s already present in allContainers data structure", new->name); } + xbt_dict_set (allContainers, new->name, new, NULL); + XBT_DEBUG("Add container name '%s'",new->name); //register NODE types for triva configuration if (new->kind == INSTR_HOST || new->kind == INSTR_LINK || new->kind == INSTR_ROUTER) { xbt_dict_set (trivaNodeTypes, new->type->name, xbt_strdup("1"), NULL); } + return new; } diff --git a/src/instr/instr_private.h b/src/instr/instr_private.h index 0ea9da6935..84bbb66667 100644 --- a/src/instr/instr_private.h +++ b/src/instr/instr_private.h @@ -63,6 +63,7 @@ typedef enum { typedef struct s_container *container_t; typedef struct s_container { + void *net_elm; /* network_element_t */ char *name; /* Unique name of this container */ char *id; /* Unique id of this container */ type_t type; /* Type of this container */ diff --git a/src/instr/instr_routing.c b/src/instr/instr_routing.c index 0802395057..472183fa3a 100644 --- a/src/instr/instr_routing.c +++ b/src/instr/instr_routing.c @@ -137,7 +137,9 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t xbt_ex_t e; TRY { - routing_get_route_and_latency(child1_name, child2_name, &route, NULL); + routing_get_route_and_latency((network_element_t)(child1->net_elm), + (network_element_t)(child2->net_elm), + &route, NULL); } CATCH(e) { xbt_ex_free(e); } @@ -163,17 +165,19 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t route_t route = xbt_new0(s_route_t,1); route->link_list = xbt_dynar_new(global_routing->size_of_link,NULL); - rc->get_route_and_latency (rc, child1_name, child2_name, route,NULL); + rc->get_route_and_latency (rc, + (network_element_t)(child1->net_elm), + (network_element_t)(child2->net_elm), route,NULL); unsigned int cpt; void *link; - container_t previous = PJ_container_get(route->src_gateway); + container_t previous = PJ_container_get(route->src_gateway->name); xbt_dynar_foreach (route->link_list, cpt, link) { char *link_name = ((link_CM02_t)link)->lmm_resource.generic_resource.name; container_t current = PJ_container_get(link_name); linkContainers (previous, current, filter); previous = current; } - container_t last = PJ_container_get(route->dst_gateway); + container_t last = PJ_container_get(route->dst_gateway->name); linkContainers (previous, last, filter); generic_free_route(route); } @@ -465,7 +469,9 @@ static void recursiveXBTGraphExtraction (xbt_graph_t graph, xbt_dict_t nodes, xb // FIXME factorize route creation with else branch below (once possible) xbt_dynar_t route=NULL; - routing_get_route_and_latency (child1_name, child2_name,&route,NULL); + routing_get_route_and_latency ((network_element_t)(child1->net_elm), + (network_element_t)(child2->net_elm), + &route,NULL); if (TRACE_onelink_only()){ if (xbt_dynar_length (route) > 1) continue; } @@ -488,17 +494,19 @@ static void recursiveXBTGraphExtraction (xbt_graph_t graph, xbt_dict_t nodes, xb route_t route = xbt_new0(s_route_t,1); route->link_list = xbt_dynar_new(global_routing->size_of_link,NULL); - rc->get_route_and_latency (rc, child1_name, child2_name,route, NULL); + rc->get_route_and_latency (rc, + (network_element_t)(child1->net_elm), + (network_element_t)(child2->net_elm),route, NULL); unsigned int cpt; void *link; - xbt_node_t current, previous = new_xbt_graph_node(graph, route->src_gateway, nodes); + xbt_node_t current, previous = new_xbt_graph_node(graph, route->src_gateway->name, nodes); xbt_dynar_foreach (route->link_list, cpt, link) { char *link_name = ((link_CM02_t)link)->lmm_resource.generic_resource.name; current = new_xbt_graph_node(graph, link_name, nodes); //previous -> current previous = current; } - current = new_xbt_graph_node(graph, route->dst_gateway, nodes); + current = new_xbt_graph_node(graph, route->dst_gateway->name, nodes); new_xbt_graph_edge (graph, previous, current, edges); generic_free_route(route); } diff --git a/src/surf/network_ns3.c b/src/surf/network_ns3.c index 3713856c83..e5684d7bed 100644 --- a/src/surf/network_ns3.c +++ b/src/surf/network_ns3.c @@ -443,7 +443,8 @@ static void ns3_update_actions_state(double now, double delta) double data_delta_sent = data_sent - action->last_sent; xbt_dynar_t route = NULL; - routing_get_route_and_latency (action->src_name, action->dst_name, &route, NULL); + + routing_get_route_and_latency (action->src_elm, action->dst_elm, &route, NULL); unsigned int i; for (i = 0; i < xbt_dynar_length (route); i++){ surf_ns3_link_t *link = ((surf_ns3_link_t*)xbt_dynar_get_ptr (route, i)); @@ -489,8 +490,8 @@ static surf_action_t ns3_communicate(void *src_elm, #ifdef HAVE_TRACING action->last_sent = 0; - action->src_name = xbt_strdup (src_name); - action->dst_name = xbt_strdup (dst_name); + action->src_elm = src_elm; + action->dst_elm = dst_elm; #endif return (surf_action_t) action; @@ -521,8 +522,6 @@ static int action_unref(surf_action_t action) xbt_swag_remove(action, action->state_set); #ifdef HAVE_TRACING - xbt_free(((surf_action_network_ns3_t)action)->src_name); - xbt_free(((surf_action_network_ns3_t)action)->dst_name); xbt_free(action->category); #endif XBT_DEBUG ("Removing action %p", action); diff --git a/src/surf/network_ns3_private.h b/src/surf/network_ns3_private.h index 271af77c2e..544c210a8d 100644 --- a/src/surf/network_ns3_private.h +++ b/src/surf/network_ns3_private.h @@ -26,10 +26,9 @@ typedef struct surf_action_network_ns3 { s_surf_action_t generic_action; #ifdef HAVE_TRACING double last_sent; - char *src_name; - char *dst_name; + network_element_t src_elm; + network_element_t dst_elm; #endif //HAVE_TRACING } s_surf_action_network_ns3_t, *surf_action_network_ns3_t; - #endif /* _SURF_NETWORK_NS3_PRIVATE_H */ -- 2.20.1