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