graph: implement Graphviz export
Adding API implementation support exporting the graph object to file. This will export the graph to a file in Graphviz format. It can be viewed in many viewers such as https://dreampuf.github.io/GraphvizOnline/ Signed-off-by: Jerin Jacob <jerinj@marvell.com> Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
This commit is contained in:
parent
c671b62cc5
commit
618d05635e
@ -473,6 +473,59 @@ __rte_node_stream_alloc(struct rte_graph *graph, struct rte_node *node)
|
||||
node->realloc_count++;
|
||||
}
|
||||
|
||||
static int
|
||||
graph_to_dot(FILE *f, struct graph *graph)
|
||||
{
|
||||
const char *src_edge_color = " [color=blue]\n";
|
||||
const char *edge_color = "\n";
|
||||
struct graph_node *graph_node;
|
||||
char *node_name;
|
||||
rte_edge_t i;
|
||||
int rc;
|
||||
|
||||
rc = fprintf(f, "Digraph %s {\n\trankdir=LR;\n", graph->name);
|
||||
if (rc < 0)
|
||||
goto end;
|
||||
|
||||
STAILQ_FOREACH(graph_node, &graph->node_list, next) {
|
||||
node_name = graph_node->node->name;
|
||||
for (i = 0; i < graph_node->node->nb_edges; i++) {
|
||||
rc = fprintf(f, "\t\"%s\"->\"%s\"%s", node_name,
|
||||
graph_node->adjacency_list[i]->node->name,
|
||||
graph_node->node->flags & RTE_NODE_SOURCE_F
|
||||
? src_edge_color
|
||||
: edge_color);
|
||||
if (rc < 0)
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
rc = fprintf(f, "}\n");
|
||||
if (rc < 0)
|
||||
goto end;
|
||||
|
||||
return 0;
|
||||
end:
|
||||
rte_errno = EBADF;
|
||||
return -rte_errno;
|
||||
}
|
||||
|
||||
int
|
||||
rte_graph_export(const char *name, FILE *f)
|
||||
{
|
||||
struct graph *graph;
|
||||
int rc = ENOENT;
|
||||
|
||||
STAILQ_FOREACH(graph, &graph_list, next) {
|
||||
if (strncmp(graph->name, name, RTE_GRAPH_NAMESIZE) == 0) {
|
||||
rc = graph_to_dot(f, graph);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
end:
|
||||
return -rc;
|
||||
}
|
||||
|
||||
|
||||
rte_graph_t
|
||||
rte_graph_max_count(void)
|
||||
{
|
||||
|
@ -6,6 +6,7 @@ EXPERIMENTAL {
|
||||
|
||||
rte_graph_create;
|
||||
rte_graph_destroy;
|
||||
rte_graph_export;
|
||||
rte_graph_from_name;
|
||||
rte_graph_id_to_name;
|
||||
rte_graph_lookup;
|
||||
|
Loading…
Reference in New Issue
Block a user