Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_graph.h(3)			      DPDK			  rte_graph.h(3)

NAME
     rte_graph.h

SYNOPSIS
     #include <stdbool.h>
     #include <stdio.h>
     #include <rte_common.h>
     #include <rte_compat.h>

   Data Structures
     struct rte_graph_param
     struct rte_graph_cluster_stats_param
     struct rte_graph_cluster_node_stats
     struct rte_node_xstats
     struct rte_node_register

   Macros
     #define RTE_GRAPH_NAMESIZE   64
     #define RTE_NODE_NAMESIZE	 64
     #define RTE_NODE_XSTAT_DESC_SIZE	64
     #define RTE_GRAPH_PCAP_FILE_SZ   64
     #define RTE_GRAPH_OFF_INVALID   UINT32_MAX
     #define RTE_NODE_ID_INVALID   UINT32_MAX
     #define RTE_EDGE_ID_INVALID   UINT16_MAX
     #define RTE_GRAPH_ID_INVALID   UINT16_MAX
     #define RTE_GRAPH_FENCE   0xdeadbeef12345678ULL
     #define rte_graph_foreach_node(count,  off,  graph,  node)
     #define RTE_NODE_SOURCE_F	 (1ULL << 0)
     #define RTE_NODE_REGISTER(node)

   Typedefs
     typedef uint32_t rte_graph_off_t
     typedef uint32_t rte_node_t
     typedef uint16_t rte_edge_t
     typedef uint16_t rte_graph_t
     typedef  uint16_t(*  rte_node_process_t)  (struct	rte_graph *graph, struct
	 rte_node *node, void **objs, uint16_t nb_objs)
     typedef int(*  rte_node_init_t)  (const  struct  rte_graph  *graph,  struct
	 rte_node *node)
     typedef  void(*  rte_node_fini_t)	(const	struct	rte_graph *graph, struct
	 rte_node *node)
     typedef int(* rte_graph_cluster_stats_cb_t) (bool is_first,  bool	is_last,
	 void *cookie, const struct rte_graph_cluster_node_stats *stats)
     typedef  void(*  packets_enqueued_cb)  (struct  rte_graph	*graph, uint64_t
	 cb_priv)

   Functions
     rte_graph_t rte_graph_create  (const  char  *name,  struct  rte_graph_param
	 *prm)
     int rte_graph_destroy (rte_graph_t id)
     rte_graph_t  rte_graph_clone  (rte_graph_t  id,  const  char  *name, struct
	 rte_graph_param *prm)
     rte_graph_t rte_graph_from_name (const char *name)
     char * rte_graph_id_to_name (rte_graph_t id)
     int rte_graph_export (const char *name, FILE *f)
     int rte_graph_model_mcore_dispatch_core_bind (rte_graph_t id, int lcore)
     void rte_graph_model_mcore_dispatch_core_unbind (rte_graph_t id)
     struct rte_graph * rte_graph_lookup (const char *name)
     rte_graph_t rte_graph_max_count (void)
     void rte_graph_dump (FILE *f, rte_graph_t id)
     void rte_graph_list_dump (FILE *f)
     void rte_graph_obj_dump (FILE *f, struct rte_graph *graph, bool all)
     struct rte_node  *  rte_graph_node_get  (rte_graph_t  graph_id,  rte_node_t
	 node_id)
     struct rte_node * rte_graph_node_get_by_name (const char *graph, const char
	 *name)
     struct   rte_graph_cluster_stats  *  rte_graph_cluster_stats_create  (const
	 struct rte_graph_cluster_stats_param *prm)
     void rte_graph_cluster_stats_destroy (struct rte_graph_cluster_stats *stat)
     void  rte_graph_cluster_stats_get	(struct  rte_graph_cluster_stats  *stat,
	 bool skip_cb)
     void rte_graph_cluster_stats_reset (struct rte_graph_cluster_stats *stat)
     rte_node_t __rte_node_register (const struct rte_node_register *node)
     rte_node_t rte_node_clone (rte_node_t id, const char *name)
     rte_node_t rte_node_from_name (const char *name)
     char * rte_node_id_to_name (rte_node_t id)
     rte_edge_t rte_node_edge_count (rte_node_t id)
     rte_edge_t rte_node_edge_update (rte_node_t id, rte_edge_t from, const char
	 **next_nodes, uint16_t nb_edges)
     rte_edge_t rte_node_edge_shrink (rte_node_t id, rte_edge_t size)
     rte_node_t rte_node_edge_get (rte_node_t id, char *next_nodes[])
     rte_node_t rte_node_max_count (void)
     void rte_node_dump (FILE *f, rte_node_t id)
     void rte_node_list_dump (FILE *f)
     static __rte_always_inline int rte_node_is_invalid (rte_node_t id)
     __rte_experimental int rte_node_free (rte_node_t id)
     static __rte_always_inline int rte_edge_is_invalid (rte_edge_t id)
     static __rte_always_inline int rte_graph_is_invalid (rte_graph_t id)
     static __rte_always_inline int rte_graph_has_stats_feature (void)

Detailed Description
     Graph  architecture  abstracts  the data processing functions as 'node' and
     'link' them together to create a complex 'graph' to enable reusable/modular
     data processing functions.

     This API enables graph framework operations such as  create,  lookup,  dump
     and  destroy  on  graph and node operations such as clone, edge update, and
     edge shrink, etc. The API also allows to create the stats cluster to  moni-
     tor per graph and per node stats.

     Definition in file rte_graph.h.

Macro Definition Documentation
   #define RTE_GRAPH_NAMESIZE	64
     Max length of graph name.

     Definition at line 31 of file rte_graph.h.

   #define RTE_NODE_NAMESIZE   64
     Max length of node name.

     Definition at line 32 of file rte_graph.h.

   #define RTE_NODE_XSTAT_DESC_SIZE   64
     Max length of node xstat description.

     Definition at line 33 of file rte_graph.h.

   #define RTE_GRAPH_PCAP_FILE_SZ   64
     Max length of pcap file name.

     Definition at line 34 of file rte_graph.h.

   #define RTE_GRAPH_OFF_INVALID   UINT32_MAX
     Invalid graph offset.

     Definition at line 35 of file rte_graph.h.

   #define RTE_NODE_ID_INVALID	 UINT32_MAX
     Invalid node id.

     Definition at line 36 of file rte_graph.h.

   #define RTE_EDGE_ID_INVALID	 UINT16_MAX
     Invalid edge id.

     Definition at line 37 of file rte_graph.h.

   #define RTE_GRAPH_ID_INVALID   UINT16_MAX
     Invalid graph id.

     Definition at line 38 of file rte_graph.h.

   #define RTE_GRAPH_FENCE   0xdeadbeef12345678ULL
     Graph fence data.

     Definition at line 39 of file rte_graph.h.

   #define rte_graph_foreach_node(count, off, graph, node)
     Value:.PP
	 for (count = 0, off = graph->nodes_start,				\
	      node = RTE_PTR_ADD(graph, off);					\
	      count < graph->nb_nodes;						\
	      off = node->next, node = RTE_PTR_ADD(graph, off), count++)
     Macro to browse rte_node object after the graph creation

     Definition at line 408 of file rte_graph.h.

   #define RTE_NODE_SOURCE_F   (1ULL << 0)
     Node type is source.

     Definition at line 498 of file rte_graph.h.

   #define RTE_NODE_REGISTER(node)
     Value:.PP
	 RTE_INIT(rte_node_register_##node)					\
	 {									\
	     node.parent_id = RTE_NODE_ID_INVALID;			    \
	     node.id = __rte_node_register(&node);			    \
	 }
     Register a static node.

     The  static  node is registered through the constructor scheme, thereby, it
     can be used in a multi-process scenario.

     Parameters
	 node Valid node pointer with name, process function, and next_nodes.

     Definition at line 533 of file rte_graph.h.

Typedef Documentation
   typedef uint32_t rte_graph_off_t
     Graph offset type.

     Definition at line 41 of file rte_graph.h.

   typedef uint32_t rte_node_t
     Node id type.

     Definition at line 42 of file rte_graph.h.

   typedef uint16_t rte_edge_t
     Edge id type.

     Definition at line 43 of file rte_graph.h.

   typedef uint16_t rte_graph_t
     Graph id type.

     Definition at line 44 of file rte_graph.h.

   typedef  uint16_t(*	rte_node_process_t)  (struct  rte_graph  *graph,  struct
     rte_node *node, void **objs, uint16_t nb_objs)
     Node stats within cluster of graphs Node process function.

     The   function  invoked  when  the  worker  thread  walks	on  nodes  using
     rte_graph_walk().

     Parameters
	 graph Pointer to the graph object.
	 node Pointer to the node object.
	 objs Pointer to an array of objects to be processed.
	 nb_objs Number of objects in the array.

     Returns
	 Number of objects processed.

     See also
	 rte_graph_walk()

     Definition at line 95 of file rte_graph.h.

   typedef  int(*  rte_node_init_t)  (const  struct  rte_graph	*graph,   struct
     rte_node *node)
     Node initialization function.

     The  function  invoked when the user creates the graph using rte_graph_cre-
     ate()

     Parameters
	 graph Pointer to the graph object.
	 node Pointer to the node object.

     Returns

	 * 0: Success. -<0: Failure.

     See also
	 rte_graph_create()

     Definition at line 115 of file rte_graph.h.

   typedef  void(*  rte_node_fini_t)  (const  struct  rte_graph  *graph,  struct
     rte_node *node)
     Node finalization function.

     The  function  invoked when the user destroys the graph using rte_graph_de-
     stroy().

     Parameters
	 graph Pointer to the graph object.
	 node Pointer to the node object.

     See also
	 rte_graph_destroy()

     Definition at line 131 of file rte_graph.h.

   typedef int(* rte_graph_cluster_stats_cb_t)	(bool  is_first,  bool	is_last,
     void *cookie, const struct rte_graph_cluster_node_stats *stats)
     Graph cluster stats callback.

     Parameters
	 is_first Flag to denote that stats are of the first node.
	 is_last Flag to denote that stats are of the last node.
	 cookie Cookie supplied during stats creation.
	 stats Node cluster stats data.

     Returns

	 * 0: Success. -<0: Failure.

     Definition at line 150 of file rte_graph.h.

   typedef   void(*  packets_enqueued_cb)  (struct  rte_graph  *graph,	uint64_t
     cb_priv)
     Graph dispatch enqueue notification callback.

     Parameters
	 graph Current graph.
	 cb_priv Opaque argument given to the callback.

     Definition at line 161 of file rte_graph.h.

Function Documentation
   rte_graph_t rte_graph_create (const char *  name,  struct  rte_graph_param  *
     prm)
     Create Graph.

     Create memory reel, detect loops and find isolated nodes.

     Parameters
	 name Unique name for this graph.
	 prm  Graph  parameter,  includes node names and count to be included in
	 this graph.

     Returns
	 Unique graph id on success, RTE_GRAPH_ID_INVALID otherwise.

   int rte_graph_destroy (rte_graph_t id)
     Destroy Graph.

     Free Graph memory reel.

     Parameters
	 id id of the graph to destroy.

     Returns
	 0 on success, error otherwise.

   rte_graph_t rte_graph_clone	(rte_graph_t  id,  const  char	*  name,  struct
     rte_graph_param * prm)
     Clone Graph.

     Clone  a  graph  from static graph (graph created from rte_graph_create()).
     And all cloned graphs attached to the parent graph MUST  be  destroyed  to-
     gether for fast schedule design limitation (stop ALL graph walk firstly).

     Parameters
	 id Static graph id to clone from.
	 name  Name of the new graph. The library prepends the parent graph name
	 to the user-specified name. The final graph name will be, 'parent graph
	 name' + '-' + name.
	 prm Graph parameter, includes model-specific parameters in this graph.

     Returns
	 Valid graph id on success, RTE_GRAPH_ID_INVALID otherwise.

   rte_graph_t rte_graph_from_name (const char * name)
     Get graph id from graph name.

     Parameters
	 name Name of the graph to get id.

     Returns
	 Graph id on success, RTE_GRAPH_ID_INVALID otherwise.

   char * rte_graph_id_to_name (rte_graph_t id)
     Get graph name from graph id.

     Parameters
	 id id of the graph to get name.

     Returns
	 Graph name on success, NULL otherwise.

   int rte_graph_export (const char * name, FILE * f)
     Export the graph as graph viz dot file

     Parameters
	 name Name of the graph to export.
	 f File pointer to export the graph.

     Returns
	 0 on success, error otherwise.

   int rte_graph_model_mcore_dispatch_core_bind (rte_graph_t id, int lcore)
     Bind graph with specific lcore for mcore dispatch model.

     Parameters
	 id Graph id to get the pointer of graph object
	 lcore The lcore where the graph will run on

     Returns
	 0 on success, error otherwise.

   void rte_graph_model_mcore_dispatch_core_unbind (rte_graph_t id)
     Unbind graph with lcore for mcore dispatch model

     Parameters
	 id Graph id to get the pointer of graph object

   struct rte_graph * rte_graph_lookup (const char * name)
     Get graph object from its name.

     Typical usage of this API to get graph objects in	the  worker  thread  and
     followed calling rte_graph_walk() in a loop.

     Parameters
	 name Name of the graph.

     Returns
	 Graph pointer on success, NULL otherwise.

     See also
	 rte_graph_walk()

   rte_graph_t rte_graph_max_count (void)
     Get maximum number of graph available.

     Returns
	 Maximum graph count.

   void rte_graph_dump (FILE * f, rte_graph_t id)
     Dump the graph information to file.

     Parameters
	 f File pointer to dump graph info.
	 id Graph id to get graph info.

   void rte_graph_list_dump (FILE * f)
     Dump all graphs information to file

     Parameters
	 f File pointer to dump graph info.

   void rte_graph_obj_dump (FILE * f, struct rte_graph * graph, bool all)
     Dump graph information along with node info to file

     Parameters
	 f File pointer to dump graph info.
	 graph Graph pointer to get graph info.
	 all true to dump nodes in the graph.

   struct   rte_node  *  rte_graph_node_get  (rte_graph_t  graph_id,  rte_node_t
     node_id)
     Get node object with in graph from id.

     Parameters
	 graph_id Graph id to get node pointer from.
	 node_id Node id to get node pointer.

     Returns
	 Node pointer on success, NULL otherwise.

   struct rte_node * rte_graph_node_get_by_name (const char * graph, const  char
     * name)
     Get node pointer with in graph from name.

     Parameters
	 graph Graph name to get node pointer from.
	 name Node name to get the node pointer.

     Returns
	 Node pointer on success, NULL otherwise.

   struct rte_graph_cluster_stats * rte_graph_cluster_stats_create (const struct
     rte_graph_cluster_stats_param * prm)
     Create graph stats cluster to aggregate runtime node stats.

     Parameters
	 prm  Parameters  including file pointer to dump stats, Graph pattern to
	 create cluster and callback function.

     Returns
	 Valid pointer on success, NULL otherwise.

   void rte_graph_cluster_stats_destroy (struct rte_graph_cluster_stats * stat)
     Destroy cluster stats.

     Parameters
	 stat Valid cluster pointer to destroy.

   void rte_graph_cluster_stats_get (struct rte_graph_cluster_stats * stat, bool
     skip_cb)
     Get stats to application.

     Parameters
	 stat Cluster status.
	 skip_cb true to skip callback function invocation.

   void rte_graph_cluster_stats_reset (struct rte_graph_cluster_stats * stat)
     Reset cluster stats to zero.

     Parameters
	 stat Valid cluster stats pointer.

   rte_node_t __rte_node_register (const struct rte_node_register * node)
     Register new packet processing node. Nodes can  be  registered  dynamically
     via this call or statically via the RTE_NODE_REGISTER macro.

     Parameters
	 node Valid node pointer with name, process function and next_nodes.

     Returns
	 Valid node id on success, RTE_NODE_ID_INVALID otherwise.

     See also
	 RTE_NODE_REGISTER()

   rte_node_t rte_node_clone (rte_node_t id, const char * name)
     Clone a node from static node(node created from RTE_NODE_REGISTER).

     Parameters
	 id Static node id to clone from.
	 name Name of the new node. The library prepends the parent node name to
	 the  user-specified  name.  The  final  node name will be, 'parent node
	 name' + '-' + name.

     Returns
	 Valid node id on success, RTE_NODE_ID_INVALID otherwise.

   rte_node_t rte_node_from_name (const char * name)
     Get node id from node name.

     Parameters
	 name Valid node name. In the case of the cloned node, the name will  be
	 'parent node name' + '-' + name.

     Returns
	 Valid node id on success, RTE_NODE_ID_INVALID otherwise.

   char * rte_node_id_to_name (rte_node_t id)
     Get node name from node id.

     Parameters
	 id Valid node id.

     Returns
	 Valid node name on success, NULL otherwise.

   rte_edge_t rte_node_edge_count (rte_node_t id)
     Get the number of edges(next-nodes) for a node from node id.

     Parameters
	 id Valid node id.

     Returns
	 Valid edge count on success, RTE_EDGE_ID_INVALID otherwise.

   rte_edge_t  rte_node_edge_update  (rte_node_t id, rte_edge_t from, const char
     ** next_nodes, uint16_t nb_edges)
     Update the edges for a node from node id.

     Parameters
	 id Valid node id.
	 from Index to update the edges from. RTE_EDGE_ID_INVALID is  valid,  in
	 that case, it will be added to the end of the list.
	 next_nodes Name of the edges to update.
	 nb_edges Number of edges to update.

     Returns
	 Valid edge count on success, 0 otherwise.

   rte_edge_t rte_node_edge_shrink (rte_node_t id, rte_edge_t size)
     Shrink the edges to a given size.

     Parameters
	 id Valid node id.
	 size New size to shrink the edges.

     Returns
	 New size on success, RTE_EDGE_ID_INVALID otherwise.

   rte_node_t rte_node_edge_get (rte_node_t id, char * next_nodes[])
     Get the edge names from a given node.

     Parameters
	 id Valid node id.
	 next_nodes  Buffer to copy the edge names. The NULL value is allowed in
	 that case, the function returns the size of the array that needs to  be
	 allocated.

     Returns
	 When  next_nodes  == NULL, it returns the size of the array else number
	 of item copied.

   rte_node_t rte_node_max_count (void)
     Get maximum nodes available.

     Returns
	 Maximum nodes count.

   void rte_node_dump (FILE * f, rte_node_t id)
     Dump node info to file.

     Parameters
	 f File pointer to dump the node info.
	 id Node id to get the info.

   void rte_node_list_dump (FILE * f)
     Dump all node info to file.

     Parameters
	 f File pointer to dump the node info.

   static __rte_always_inline int rte_node_is_invalid (rte_node_t id) [static]
     Test the validity of node id.

     Parameters
	 id Node id to check.

     Returns
	 1 if valid id, 0 otherwise.

     Definition at line 672 of file rte_graph.h.

   __rte_experimental int rte_node_free (rte_node_t id)
     Release the memory allocated for a node created using RTE_NODE_REGISTER  or
     rte_node_clone, if it is not linked to any graphs.

     Parameters
	 id Node id to check.

     Returns

	 * 0: Success. -<0: Failure.

   static __rte_always_inline int rte_edge_is_invalid (rte_edge_t id) [static]
     Test the validity of edge id.

     Parameters
	 id Edge node id to check.

     Returns
	 1 if valid id, 0 otherwise.

     Definition at line 701 of file rte_graph.h.

   static __rte_always_inline int rte_graph_is_invalid (rte_graph_t id) [static]

     Test the validity of graph id.

     Parameters
	 id Graph id to check.

     Returns
	 1 if valid id, 0 otherwise.

     Definition at line 716 of file rte_graph.h.

   static __rte_always_inline int rte_graph_has_stats_feature (void) [static]
     Test stats feature support.

     Returns
	 1 if stats enabled, 0 otherwise.

     Definition at line 728 of file rte_graph.h.

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		  rte_graph.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rte_graph_list_dump&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help