xref: /dpdk/lib/graph/graph_debug.c (revision 0787cdbce54381a3517c24ccec8bbb58215e17b3)
199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
299a2dd95SBruce Richardson  * Copyright(C) 2020 Marvell International Ltd.
399a2dd95SBruce Richardson  */
499a2dd95SBruce Richardson 
599a2dd95SBruce Richardson 
699a2dd95SBruce Richardson #include "graph_private.h"
799a2dd95SBruce Richardson 
899a2dd95SBruce Richardson void
999a2dd95SBruce Richardson graph_dump(FILE *f, struct graph *g)
1099a2dd95SBruce Richardson {
1199a2dd95SBruce Richardson 	struct graph_node *graph_node;
1299a2dd95SBruce Richardson 	rte_edge_t i = 0;
1399a2dd95SBruce Richardson 
1499a2dd95SBruce Richardson 	fprintf(f, "graph <%s>\n", g->name);
1599a2dd95SBruce Richardson 	fprintf(f, "  id=%" PRIu32 "\n", g->id);
1699a2dd95SBruce Richardson 	fprintf(f, "  cir_start=%" PRIu32 "\n", g->cir_start);
1799a2dd95SBruce Richardson 	fprintf(f, "  cir_mask=%" PRIu32 "\n", g->cir_mask);
1899a2dd95SBruce Richardson 	fprintf(f, "  addr=%p\n", g);
1999a2dd95SBruce Richardson 	fprintf(f, "  graph=%p\n", g->graph);
2099a2dd95SBruce Richardson 	fprintf(f, "  mem_sz=%zu\n", g->mem_sz);
2199a2dd95SBruce Richardson 	fprintf(f, "  node_count=%" PRIu32 "\n", g->node_count);
2299a2dd95SBruce Richardson 	fprintf(f, "  src_node_count=%" PRIu32 "\n", g->src_node_count);
2399a2dd95SBruce Richardson 
2499a2dd95SBruce Richardson 	STAILQ_FOREACH(graph_node, &g->node_list, next)
2599a2dd95SBruce Richardson 		fprintf(f, "     node[%d] <%s>\n", i++, graph_node->node->name);
2699a2dd95SBruce Richardson }
2799a2dd95SBruce Richardson 
2899a2dd95SBruce Richardson void
2999a2dd95SBruce Richardson node_dump(FILE *f, struct node *n)
3099a2dd95SBruce Richardson {
3199a2dd95SBruce Richardson 	rte_edge_t i;
3299a2dd95SBruce Richardson 
3399a2dd95SBruce Richardson 	fprintf(f, "node <%s>\n", n->name);
3499a2dd95SBruce Richardson 	fprintf(f, "  id=%" PRIu32 "\n", n->id);
3599a2dd95SBruce Richardson 	fprintf(f, "  flags=0x%" PRIx64 "\n", n->flags);
3699a2dd95SBruce Richardson 	fprintf(f, "  addr=%p\n", n);
3799a2dd95SBruce Richardson 	fprintf(f, "  process=%p\n", n->process);
38*0787cdbcSHuichao cai 	if (n->parent_id == RTE_NODE_ID_INVALID)
39*0787cdbcSHuichao cai 		fprintf(f, "  parent_id=RTE_NODE_ID_INVALID\n");
40*0787cdbcSHuichao cai 	else
41*0787cdbcSHuichao cai 		fprintf(f, "  parent_id=%" PRIu32 "\n", n->parent_id);
42*0787cdbcSHuichao cai 	fprintf(f, "  init=%p\n", n->init);
43*0787cdbcSHuichao cai 	fprintf(f, "  fini=%p\n", n->fini);
44*0787cdbcSHuichao cai 	fprintf(f, "  xstats=%p\n", n->xstats);
45*0787cdbcSHuichao cai 	fprintf(f, "  next node addr=%p\n", STAILQ_NEXT(n, next));
46*0787cdbcSHuichao cai 	if (STAILQ_NEXT(n, next))
47*0787cdbcSHuichao cai 		fprintf(f, "  next node name=%s\n", STAILQ_NEXT(n, next)->name);
4899a2dd95SBruce Richardson 	fprintf(f, "  nb_edges=%d\n", n->nb_edges);
4999a2dd95SBruce Richardson 	for (i = 0; i < n->nb_edges; i++)
5099a2dd95SBruce Richardson 		fprintf(f, "     edge[%d] <%s>\n", i, n->next_nodes[i]);
5199a2dd95SBruce Richardson }
5299a2dd95SBruce Richardson 
5399a2dd95SBruce Richardson void
5499a2dd95SBruce Richardson rte_graph_obj_dump(FILE *f, struct rte_graph *g, bool all)
5599a2dd95SBruce Richardson {
5699a2dd95SBruce Richardson 	rte_node_t count;
5799a2dd95SBruce Richardson 	rte_graph_off_t off;
5899a2dd95SBruce Richardson 	struct rte_node *n;
5999a2dd95SBruce Richardson 	rte_edge_t i;
6099a2dd95SBruce Richardson 
6199a2dd95SBruce Richardson 	fprintf(f, "graph <%s> @ %p\n", g->name, g);
6299a2dd95SBruce Richardson 	fprintf(f, "  id=%" PRIu32 "\n", g->id);
6399a2dd95SBruce Richardson 	fprintf(f, "  head=%" PRId32 "\n", (int32_t)g->head);
6499a2dd95SBruce Richardson 	fprintf(f, "  tail=%" PRId32 "\n", (int32_t)g->tail);
6599a2dd95SBruce Richardson 	fprintf(f, "  cir_mask=0x%" PRIx32 "\n", g->cir_mask);
6699a2dd95SBruce Richardson 	fprintf(f, "  nb_nodes=%" PRId32 "\n", g->nb_nodes);
6799a2dd95SBruce Richardson 	fprintf(f, "  socket=%d\n", g->socket);
6899a2dd95SBruce Richardson 	fprintf(f, "  fence=0x%" PRIx64 "\n", g->fence);
6999a2dd95SBruce Richardson 	fprintf(f, "  nodes_start=0x%" PRIx32 "\n", g->nodes_start);
7099a2dd95SBruce Richardson 	fprintf(f, "  cir_start=%p\n", g->cir_start);
7199a2dd95SBruce Richardson 
7299a2dd95SBruce Richardson 	rte_graph_foreach_node(count, off, g, n) {
7399a2dd95SBruce Richardson 		if (!all && n->idx == 0)
7499a2dd95SBruce Richardson 			continue;
7599a2dd95SBruce Richardson 		fprintf(f, "     node[%d] <%s>\n", count, n->name);
7699a2dd95SBruce Richardson 		fprintf(f, "       fence=0x%" PRIx64 "\n", n->fence);
7799a2dd95SBruce Richardson 		fprintf(f, "       objs=%p\n", n->objs);
7899a2dd95SBruce Richardson 		fprintf(f, "       process=%p\n", n->process);
7999a2dd95SBruce Richardson 		fprintf(f, "       id=0x%" PRIx32 "\n", n->id);
8099a2dd95SBruce Richardson 		fprintf(f, "       offset=0x%" PRIx32 "\n", n->off);
8199a2dd95SBruce Richardson 		fprintf(f, "       nb_edges=%" PRId32 "\n", n->nb_edges);
8299a2dd95SBruce Richardson 		fprintf(f, "       realloc_count=%d\n", n->realloc_count);
8399a2dd95SBruce Richardson 		fprintf(f, "       size=%d\n", n->size);
8499a2dd95SBruce Richardson 		fprintf(f, "       idx=%d\n", n->idx);
8599a2dd95SBruce Richardson 		fprintf(f, "       total_objs=%" PRId64 "\n", n->total_objs);
86358ff83fSZhirun Yan 		if (rte_graph_worker_model_get(g) == RTE_GRAPH_MODEL_MCORE_DISPATCH) {
87358ff83fSZhirun Yan 			fprintf(f, "       total_sched_objs=%" PRId64 "\n",
88358ff83fSZhirun Yan 				n->dispatch.total_sched_objs);
89358ff83fSZhirun Yan 			fprintf(f, "       total_sched_fail=%" PRId64 "\n",
90358ff83fSZhirun Yan 				n->dispatch.total_sched_fail);
91358ff83fSZhirun Yan 		}
9299a2dd95SBruce Richardson 		fprintf(f, "       total_calls=%" PRId64 "\n", n->total_calls);
9399a2dd95SBruce Richardson 		for (i = 0; i < n->nb_edges; i++)
9499a2dd95SBruce Richardson 			fprintf(f, "          edge[%d] <%s>\n", i,
9599a2dd95SBruce Richardson 				n->nodes[i]->name);
9699a2dd95SBruce Richardson 	}
9799a2dd95SBruce Richardson }
98