Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix compilation with tracing and new network_element_t
authornavarro <navarro@caraja.(none)>
Tue, 20 Mar 2012 14:19:50 +0000 (15:19 +0100)
committernavarro <navarro@caraja.(none)>
Tue, 20 Mar 2012 14:19:50 +0000 (15:19 +0100)
include/instr/instr.h
src/instr/instr_interface.c
src/instr/instr_paje_containers.c
src/instr/instr_private.h
src/instr/instr_routing.c
src/surf/network_ns3.c
src/surf/network_ns3_private.h

index 7a76692..2467a46 100644 (file)
@@ -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_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 */
 
 
 #else                           /* HAVE_TRACING */
 
index 13c3e39..2ff128d 100644 (file)
@@ -137,8 +137,8 @@ static void instr_user_variable(double time,
 }
 
 static void instr_user_srcdst_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,
                               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 */
 }
 
 /* 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);
 }
 
 {
   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);
 }
 
 {
   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);
 }
 
 {
   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);
 }
 
 {
   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);
 }
 
 {
   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);
 }
 {
   instr_user_srcdst_variable (time, src, dst, variable, "LINK", value, INSTR_US_SUB);
 }
index b1d2563..526db8a 100644 (file)
@@ -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;
   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;
   // 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);
   }
   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_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);
   }
 
   //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;
 }
 
   return new;
 }
 
index 0ea9da6..84bbb66 100644 (file)
@@ -63,6 +63,7 @@ typedef enum {
 
 typedef struct s_container *container_t;
 typedef struct s_container {
 
 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 */
   char *name;     /* Unique name of this container */
   char *id;       /* Unique id of this container */
   type_t type;    /* Type of this container */
index 0802395..472183f 100644 (file)
@@ -137,7 +137,9 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t
         xbt_ex_t e;
 
         TRY {
         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);
         }
         } 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);
 
         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;
         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;
         }
         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);
       }
         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;
 
         // 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;
         }
         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);
 
         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;
         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;
         }
         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);
       }
         new_xbt_graph_edge (graph, previous, current, edges);
         generic_free_route(route);
       }
index 3713856..e5684d7 100644 (file)
@@ -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;
       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));
       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;
 
 #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;
 #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_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);
     xbt_free(action->category);
 #endif
     XBT_DEBUG ("Removing action %p", action);
index 271af77..544c210 100644 (file)
@@ -26,10 +26,9 @@ typedef struct surf_action_network_ns3 {
   s_surf_action_t generic_action;
 #ifdef HAVE_TRACING
   double last_sent;
   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 //HAVE_TRACING
 } s_surf_action_network_ns3_t, *surf_action_network_ns3_t;
 
-
 #endif                          /* _SURF_NETWORK_NS3_PRIVATE_H */
 #endif                          /* _SURF_NETWORK_NS3_PRIVATE_H */