#ifdef HAVE_TRACING
#include "surf/surf_private.h"
#include "surf/network_private.h"
+#include "xbt/graph.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY (instr_routing, instr, "Tracing platform hierarchy");
strcmp (child1_name, child2_name) != 0){
xbt_dynar_t route = global_routing->get_route (child1_name, child2_name);
+ if (TRACE_onelink_only()){
+ if (xbt_dynar_length (route) > 1) continue;
+ }
unsigned int cpt;
void *link;
container_t previous = child1;
/*
* user categories support
*/
-static void recursiveNewUserVariableType (const char *new_typename, const char *color, type_t root)
+static void recursiveNewVariableType (const char *new_typename, const char *color, type_t root)
{
if (!strcmp (root->name, "HOST")){
char tnstr[INSTR_DEFAULT_STR_SIZE];
type_t child_type;
char *name;
xbt_dict_foreach(root->children, cursor, name, child_type) {
- recursiveNewUserVariableType (new_typename, color, child_type);
+ recursiveNewVariableType (new_typename, color, child_type);
}
}
-void instr_new_user_variable_type (const char *new_typename, const char *color)
+void instr_new_variable_type (const char *new_typename, const char *color)
{
- recursiveNewUserVariableType (new_typename, color, getRootType());
+ recursiveNewVariableType (new_typename, color, getRootType());
}
-static void recursiveNewUserLinkVariableType (const char *new_typename, const char *color, type_t root)
+static void recursiveNewUserVariableType (const char *father_type, const char *new_typename, const char *color, type_t root)
{
- if (!strcmp (root->name, "LINK")){
+ if (!strcmp (root->name, father_type)){
getVariableType(new_typename, color, root);
}
xbt_dict_cursor_t cursor = NULL;
type_t child_type;
char *name;
xbt_dict_foreach(root->children, cursor, name, child_type) {
- recursiveNewUserLinkVariableType (new_typename, color, child_type);
+ recursiveNewUserVariableType (father_type, new_typename, color, child_type);
}
}
-void instr_new_user_link_variable_type (const char *new_typename, const char *color)
+void instr_new_user_variable_type (const char *father_type, const char *new_typename, const char *color)
{
- recursiveNewUserLinkVariableType (new_typename, color, getRootType());
+ recursiveNewUserVariableType (father_type, new_typename, color, getRootType());
}
-static void recursiveNewUserHostVariableType (const char *new_typename, const char *color, type_t root)
-{
- if (!strcmp (root->name, "HOST")){
- getVariableType(new_typename, color, root);
- }
- xbt_dict_cursor_t cursor = NULL;
- type_t child_type;
- char *name;
- xbt_dict_foreach(root->children, cursor, name, child_type) {
- recursiveNewUserHostVariableType (new_typename, color, child_type);
- }
-}
-
-void instr_new_user_host_variable_type (const char *new_typename, const char *color)
-{
- recursiveNewUserHostVariableType (new_typename, color, getRootType());
-}
int instr_platform_traced ()
{
strcmp (child1_name, child2_name) != 0){
xbt_dynar_t route = global_routing->get_route (child1_name, child2_name);
+ if (TRACE_onelink_only()){
+ if (xbt_dynar_length (route) > 1) continue;
+ }
unsigned int cpt;
void *link;
xbt_node_t current, previous = new_xbt_graph_node(graph, child1_name, nodes);
return ret;
}
+void instr_routing_platform_graph_export_graphviz (xbt_graph_t g, const char *filename)
+{
+ unsigned int cursor = 0;
+ xbt_node_t node = NULL;
+ xbt_edge_t edge = NULL;
+ FILE *file = NULL;
+
+ file = fopen(filename, "w");
+ xbt_assert(file, "Failed to open %s \n", filename);
+
+ if (g->directed)
+ fprintf(file, "digraph test {\n");
+ else
+ fprintf(file, "graph test {\n");
+
+ fprintf(file, " graph [overlap=scale]\n");
+
+ fprintf(file, " node [shape=box, style=filled]\n");
+ fprintf(file,
+ " node [width=.3, height=.3, style=filled, color=skyblue]\n\n");
+
+ xbt_dynar_foreach(g->nodes, cursor, node) {
+ fprintf(file, " \"%s\";\n", TRACE_node_name(node));
+ }
+ xbt_dynar_foreach(g->edges, cursor, edge) {
+ const char *src_s = TRACE_node_name (edge->src);
+ const char *dst_s = TRACE_node_name (edge->dst);
+ if (g->directed)
+ fprintf(file, " \"%s\" -> \"%s\";\n", src_s, dst_s);
+ else
+ fprintf(file, " \"%s\" -- \"%s\";\n", src_s, dst_s);
+ }
+ fprintf(file, "}\n");
+ fclose(file);
+
+}
+
#endif /* HAVE_TRACING */