Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace] dumping comment and comment_file to trace files when requested
[simgrid.git] / src / instr / instr_routing.c
index 7f582cb..07dcdc4 100644 (file)
@@ -144,8 +144,8 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t
       if (strcmp (child1_name, child2_name) == 0) continue;
 
       //get the route
-      route_t route = xbt_new0(s_route_t,1);
-      route->link_list = xbt_dynar_new(global_routing->size_of_link,NULL);
+      sg_platf_route_cbarg_t route = xbt_new0(s_sg_platf_route_cbarg_t,1);
+      route->link_list = xbt_dynar_new(sizeof(sg_routing_link_t),NULL);
       rc->get_route_and_latency(rc, child1->net_elm, child2->net_elm,
                                 route, NULL);
 
@@ -160,8 +160,8 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t
       unsigned int cpt;
       void *link;
       container_t current, previous;
-      if (route->src_gateway){
-        previous = PJ_container_get(route->src_gateway->name);
+      if (route->gw_src){
+        previous = PJ_container_get(route->gw_src->name);
       }else{
         previous = child1;
       }
@@ -172,8 +172,8 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t
         linkContainers(previous, current, filter);
         previous = current;
       }
-      if (route->dst_gateway){
-        current = PJ_container_get(route->dst_gateway->name);
+      if (route->gw_dst){
+        current = PJ_container_get(route->gw_dst->name);
       }else{
         current = child2;
       }
@@ -186,8 +186,10 @@ static void recursiveGraphExtraction (AS_t rc, container_t container, xbt_dict_t
 /*
  * Callbacks
  */
-static void instr_routing_parse_start_AS (const char*id,const char*routing)
+static void instr_routing_parse_start_AS (sg_platf_AS_cbarg_t AS)
 {
+  const char*id = AS->id;
+
   if (PJ_container_get_root() == NULL){
     PJ_container_alloc ();
     PJ_type_alloc();
@@ -329,7 +331,7 @@ static void instr_routing_parse_end_platform ()
   xbt_dynar_free(&currentContainer);
   currentContainer = NULL;
   xbt_dict_t filter = xbt_dict_new_homogeneous(xbt_free);
-  recursiveGraphExtraction (global_routing->root, PJ_container_get_root(), filter);
+  recursiveGraphExtraction (routing_platf->root, PJ_container_get_root(), filter);
   xbt_dict_free(&filter);
   platform_created = 1;
   TRACE_paje_dump_buffer(1);
@@ -396,7 +398,41 @@ void instr_new_user_variable_type  (const char *father_type, const char *new_typ
   recursiveNewUserVariableType (father_type, new_typename, color, PJ_type_get_root());
 }
 
+static void recursiveNewUserStateType (const char *father_type, const char *new_typename, type_t root)
+{
+  if (!strcmp (root->name, father_type)){
+    PJ_type_state_new (new_typename, root);
+  }
+  xbt_dict_cursor_t cursor = NULL;
+  type_t child_type;
+  char *name;
+  xbt_dict_foreach(root->children, cursor, name, child_type) {
+    recursiveNewUserStateType (father_type, new_typename, child_type);
+  }
+}
+
+void instr_new_user_state_type (const char *father_type, const char *new_typename)
+{
+  recursiveNewUserStateType (father_type, new_typename, PJ_type_get_root());
+}
+
+static void recursiveNewValueForUserStateType (const char *typename, const char *value, const char *color, type_t root)
+{
+  if (!strcmp (root->name, typename)){
+    PJ_value_new (value, color, root);
+  }
+  xbt_dict_cursor_t cursor = NULL;
+  type_t child_type;
+  char *name;
+  xbt_dict_foreach(root->children, cursor, name, child_type) {
+    recursiveNewValueForUserStateType (typename, value, color, child_type);
+  }
+}
 
+void instr_new_value_for_user_state_type (const char *typename, const char *value, const char *color)
+{
+  recursiveNewValueForUserStateType (typename, value, color, PJ_type_get_root());
+}
 
 int instr_platform_traced ()
 {
@@ -471,8 +507,8 @@ static void recursiveXBTGraphExtraction (xbt_graph_t graph, xbt_dict_t nodes, xb
       if (strcmp (child1_name, child2_name) == 0) continue;
 
       //get the route
-      route_t route = xbt_new0(s_route_t,1);
-      route->link_list = xbt_dynar_new(global_routing->size_of_link,NULL);
+      sg_platf_route_cbarg_t route = xbt_new0(s_sg_platf_route_cbarg_t,1);
+      route->link_list = xbt_dynar_new(sizeof(sg_routing_link_t),NULL);
       rc->get_route_and_latency(rc, child1->net_elm, child2->net_elm,
                                 route, NULL);
 
@@ -484,8 +520,8 @@ static void recursiveXBTGraphExtraction (xbt_graph_t graph, xbt_dict_t nodes, xb
       unsigned int cpt;
       void *link;
       xbt_node_t current, previous;
-      if (route->src_gateway){
-        previous = new_xbt_graph_node(graph, route->src_gateway->name, nodes);
+      if (route->gw_src){
+        previous = new_xbt_graph_node(graph, route->gw_src->name, nodes);
       }else{
         previous = new_xbt_graph_node(graph, child1_name, nodes);
       }
@@ -497,8 +533,8 @@ static void recursiveXBTGraphExtraction (xbt_graph_t graph, xbt_dict_t nodes, xb
         //previous -> current
         previous = current;
       }
-      if (route->dst_gateway){
-        current = new_xbt_graph_node(graph, route->dst_gateway->name, nodes);
+      if (route->gw_dst){
+        current = new_xbt_graph_node(graph, route->gw_dst->name, nodes);
       }else{
         current = new_xbt_graph_node(graph, child2_name, nodes);
       }
@@ -514,7 +550,7 @@ xbt_graph_t instr_routing_platform_graph (void)
   xbt_graph_t ret = xbt_graph_new_graph (0, NULL);
   xbt_dict_t nodes = xbt_dict_new_homogeneous(NULL);
   xbt_dict_t edges = xbt_dict_new_homogeneous(NULL);
-  recursiveXBTGraphExtraction (ret, nodes, edges, global_routing->root, PJ_container_get_root());
+  recursiveXBTGraphExtraction (ret, nodes, edges, routing_platf->root, PJ_container_get_root());
   xbt_dict_free (&nodes);
   xbt_dict_free (&edges);
   return ret;