X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6ee7e9c2e455536ab817ae0136acfbb53822eecd..f04659b6df988856be778c0221f777a6283c2855:/tools/graphicator/graphicator.c diff --git a/tools/graphicator/graphicator.c b/tools/graphicator/graphicator.c index a05e9382b7..7ad0f4ddf6 100644 --- a/tools/graphicator/graphicator.c +++ b/tools/graphicator/graphicator.c @@ -8,153 +8,32 @@ #include #endif -#include -#include -#include -#include -#include - - -#include "simdag/simdag.h" -#include "xbt/log.h" -#include "xbt/dict.h" -#include "xbt/ex.h" -#include "xbt/graph.h" -#include "surf/surf.h" -#include "surf/surf_private.h" +#include "msg/msg.h" XBT_LOG_NEW_DEFAULT_CATEGORY(graphicator, "Graphicator Logging System"); -static int name_compare_links(const void *n1, const void *n2) -{ - char name1[80], name2[80]; - strcpy(name1, SD_link_get_name(*((SD_link_t *) n1))); - strcpy(name2, SD_link_get_name(*((SD_link_t *) n2))); - - return strcmp(name1, name2); -} - -static const char *node_name(xbt_node_t n) -{ - return xbt_graph_node_get_data(n); -} - -static const char *edge_name(xbt_edge_t n) -{ - return xbt_graph_edge_get_data(n); -} - -static xbt_node_t xbt_graph_search_node (xbt_graph_t graph, void *data, int (*compare_function)(const char *, const char *)) -{ - unsigned int cursor = 0; - void *tmp = NULL; - - xbt_dynar_t dynar = xbt_graph_get_nodes (graph); - xbt_dynar_foreach(dynar, cursor, tmp) { - xbt_node_t node = (xbt_node_t)tmp; - if (!compare_function (data, xbt_graph_node_get_data (node))) return node; - } - return NULL; -} - -static xbt_edge_t xbt_graph_search_edge (xbt_graph_t graph, xbt_node_t n1, xbt_node_t n2) -{ - unsigned int cursor = 0; - void *tmp = NULL; - xbt_dynar_t dynar = xbt_graph_get_edges (graph); - xbt_dynar_foreach(dynar, cursor, tmp) { - xbt_edge_t edge = (xbt_edge_t)tmp; - if (( xbt_graph_edge_get_source(edge) == n1 && - xbt_graph_edge_get_target(edge) == n2) || - ( xbt_graph_edge_get_source(edge) == n2 && - xbt_graph_edge_get_target(edge) == n1)){ - return edge; - } - } - return NULL; -} - int main(int argc, char **argv) { - char *platformFile = NULL; - char *graphvizFile = NULL; - - unsigned int i; - xbt_dict_cursor_t cursor_src = NULL; - xbt_dict_cursor_t cursor_dst = NULL; - char *src; - char *dst; - char *data; - xbt_ex_t e; - - SD_init(&argc, argv); + MSG_global_init(&argc, argv); if (argc < 3){ XBT_INFO("Usage: %s ", argv[0]); return 1; } - platformFile = argv[1]; - graphvizFile = argv[2]; + char *platformFile = argv[1]; + char *graphvizFile = argv[2]; - TRY { - SD_create_environment(platformFile); - } CATCH(e) { - xbt_die(bprintf("Error while loading %s: %s",platformFile,e.msg)); - } + MSG_create_environment(platformFile); //creating the graph structure - xbt_graph_t graph = xbt_graph_new_graph (0, NULL); - - //adding hosts - xbt_dict_foreach(global_routing->where_network_elements, cursor_src, src, data) { - xbt_graph_new_node (graph, xbt_strdup(src)); - } - - //adding links - int totalLinks = SD_link_get_number(); - const SD_link_t *links = SD_link_get_list(); - qsort((void *) links, totalLinks, sizeof(SD_link_t), name_compare_links); - for (i = 0; i < totalLinks; i++) { - xbt_graph_new_node (graph, xbt_strdup (SD_link_get_name(links[i]))); + xbt_graph_t graph = TRACE_platform_graph(); + if (graph == NULL){ + XBT_INFO ("%s expects --cfg=tracing:1", argv[0]); + }else{ + TRACE_platform_graph_export_graphviz (graph, graphvizFile); + XBT_INFO ("Output is in file %s", graphvizFile); } - - xbt_dict_foreach(global_routing->where_network_elements, cursor_src, src, data) { - xbt_dict_foreach(global_routing->where_network_elements, cursor_dst, dst, data) { - if (strcmp(src,"loopback")==0 || strcmp(dst,"loopback")==0) continue; - - xbt_node_t src_node = xbt_graph_search_node (graph, src, strcmp); - xbt_node_t dst_node = xbt_graph_search_node (graph, dst, strcmp); - TRY { - xbt_dynar_t route = global_routing->get_route(src,dst); - xbt_node_t previous = src_node; - for(i=0;iname); - if (strcmp(link_name, "loopback")==0 || strcmp(link_name, "__loopback__")==0) continue; - xbt_node_t link_node = xbt_graph_search_node (graph, link_name, strcmp); - if (!link_node){ - link_node = xbt_graph_new_node (graph, strdup(link_name)); - } - xbt_edge_t edge = xbt_graph_search_edge (graph, previous, link_node); - if (!edge){ - XBT_DEBUG("\%s %s", (char*)xbt_graph_node_get_data(previous), (char*)xbt_graph_node_get_data(link_node)); - xbt_graph_new_edge (graph, previous, link_node, NULL); - } - previous = link_node; - } - xbt_edge_t edge = xbt_graph_search_edge (graph, previous, dst_node); - if (!edge){ - XBT_DEBUG("\%s %s", (char*)xbt_graph_node_get_data(previous), (char*)xbt_graph_node_get_data(dst_node)); - xbt_graph_new_edge (graph, previous, dst_node, NULL); - } - } CATCH(e) {} - } - } - xbt_graph_export_graphviz (graph, graphvizFile, node_name, edge_name); - xbt_graph_free_graph (graph, NULL, NULL, NULL); - SD_exit(); - + MSG_clean(); return 0; }