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

  
 
  

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

NAME
     rte_graph_worker_common.h

SYNOPSIS
     #include <assert.h>
     #include <stdalign.h>
     #include <stddef.h>
     #include <rte_common.h>
     #include <rte_cycles.h>
     #include <rte_prefetch.h>
     #include <rte_memcpy.h>
     #include <rte_memory.h>
     #include 'rte_graph.h'

   Data Structures
     struct rte_node::__rte_cache_aligned

   Macros
     #define RTE_GRAPH_MODEL_RTC   0
     #define RTE_GRAPH_MODEL_MCORE_DISPATCH   1
     #define RTE_GRAPH_MODEL_DEFAULT   RTE_GRAPH_MODEL_RTC

   Functions
     static  void  rte_node_enqueue  (struct  rte_graph  *graph, struct rte_node
	 *node, rte_edge_t next, void **objs, uint16_t nb_objs)
     static void rte_node_enqueue_x1 (struct rte_graph *graph,	struct	rte_node
	 *node, rte_edge_t next, void *obj)
     static  void  rte_node_enqueue_x2 (struct rte_graph *graph, struct rte_node
	 *node, rte_edge_t next, void *obj0, void *obj1)
     static void rte_node_enqueue_x4 (struct rte_graph *graph,	struct	rte_node
	 *node, rte_edge_t next, void *obj0, void *obj1, void *obj2, void *obj3)
     static void rte_node_enqueue_next (struct rte_graph *graph, struct rte_node
	 *node, rte_edge_t *nexts, void **objs, uint16_t nb_objs)
     static  void  **  rte_node_next_stream_get (struct rte_graph *graph, struct
	 rte_node *node, rte_edge_t next, uint16_t nb_objs)
     static  void  rte_node_next_stream_put  (struct  rte_graph  *graph,  struct
	 rte_node *node, rte_edge_t next, uint16_t idx)
     static  void  rte_node_next_stream_move  (struct  rte_graph  *graph, struct
	 rte_node *src, rte_edge_t next)
     bool rte_graph_model_is_valid (uint8_t model)
     int rte_graph_worker_model_set (uint8_t model)
     uint8_t rte_graph_worker_model_get (struct rte_graph *graph)
     static  __rte_always_inline   uint8_t   rte_graph_worker_model_no_check_get
	 (struct rte_graph *graph)
     static  __rte_experimental  void  rte_node_xstat_increment (struct rte_node
	 *node, uint16_t xstat_id, uint64_t value)

Detailed Description
     This API allows a worker thread to walk over a graph and nodes  to  create,
     process, enqueue and move streams of objects to the next nodes.

     Definition in file rte_graph_worker_common.h.

Macro Definition Documentation
   #define RTE_GRAPH_MODEL_RTC	 0
     Graph worker models Run-To-Completion model. It is the default model.

     Definition at line 33 of file rte_graph_worker_common.h.

   #define RTE_GRAPH_MODEL_MCORE_DISPATCH   1
     Dispatch model to support cross-core dispatching within core affinity.

     Definition at line 35 of file rte_graph_worker_common.h.

   #define RTE_GRAPH_MODEL_DEFAULT   RTE_GRAPH_MODEL_RTC
     Default graph model.

     Definition at line 36 of file rte_graph_worker_common.h.

Function Documentation
   static  void  rte_node_enqueue  (struct  rte_graph * graph, struct rte_node *
     node, rte_edge_t next, void ** objs, uint16_t nb_objs) [inline],  [static]
     Enqueue the objs to next node for further processing and set the next  node
     to pending state in the circular buffer.

     Parameters
	 graph Graph pointer returned from rte_graph_lookup().
	 node Current node pointer.
	 next Relative next node index to enqueue objs.
	 objs Objs to enqueue.
	 nb_objs Number of objs to enqueue.

     Definition at line 310 of file rte_graph_worker_common.h.

   static  void rte_node_enqueue_x1 (struct rte_graph * graph, struct rte_node *
     node, rte_edge_t next, void * obj) [inline],  [static]
     Enqueue only one obj to next node for further processing and set  the  next
     node to pending state in the circular buffer.

     Parameters
	 graph Graph pointer returned from rte_graph_lookup().
	 node Current node pointer.
	 next Relative next node index to enqueue objs.
	 obj Obj to enqueue.

     Definition at line 336 of file rte_graph_worker_common.h.

   static  void rte_node_enqueue_x2 (struct rte_graph * graph, struct rte_node *
     node, rte_edge_t next, void * obj0, void * obj1) [inline],  [static]
     Enqueue only two objs to next node for further processing and set the  next
     node  to  pending state in the circular buffer. Same as rte_node_enqueue_x1
     but enqueue two objs.

     Parameters
	 graph Graph pointer returned from rte_graph_lookup().
	 node Current node pointer.
	 next Relative next node index to enqueue objs.
	 obj0 Obj to enqueue.
	 obj1 Obj to enqueue.

     Definition at line 365 of file rte_graph_worker_common.h.

   static void rte_node_enqueue_x4 (struct rte_graph * graph, struct rte_node  *
     node,  rte_edge_t next, void * obj0, void * obj1, void * obj2, void * obj3)
     [inline],	[static]
     Enqueue only four objs to next node for further processing and set the next
     node to pending state in the circular buffer. Same  as  rte_node_enqueue_x1
     but enqueue four objs.

     Parameters
	 graph Graph pointer returned from rte_graph_lookup().
	 node Current node pointer.
	 next Relative next node index to enqueue objs.
	 obj0 1st obj to enqueue.
	 obj1 2nd obj to enqueue.
	 obj2 3rd obj to enqueue.
	 obj3 4th obj to enqueue.

     Definition at line 399 of file rte_graph_worker_common.h.

   static  void rte_node_enqueue_next (struct rte_graph * graph, struct rte_node
     * node, rte_edge_t * nexts,  void	**  objs,  uint16_t  nb_objs)  [inline],
     [static]
     Enqueue objs to multiple next nodes for further processing and set the next
     nodes  to pending state in the circular buffer. objs[i] will be enqueued to
     nexts[i].

     Parameters
	 graph Graph pointer returned from rte_graph_lookup().
	 node Current node pointer.
	 nexts List of relative next node indices to enqueue objs.
	 objs List of objs to enqueue.
	 nb_objs Number of objs to enqueue.

     Definition at line 432 of file rte_graph_worker_common.h.

   static void ** rte_node_next_stream_get (struct  rte_graph  *  graph,  struct
     rte_node * node, rte_edge_t next, uint16_t nb_objs) [inline],  [static]
     Get  the stream of next node to enqueue the objs. Once done with the updat-
     ing the objs, needs to call rte_node_next_stream_put to put the  next  node
     to pending state.

     Parameters
	 graph Graph pointer returned from rte_graph_lookup().
	 node Current node pointer.
	 next Relative next node index to get stream.
	 nb_objs Requested free size of the next stream.

     Returns
	 Valid next stream on success.

     See also
	 rte_node_next_stream_put().

     Definition at line 461 of file rte_graph_worker_common.h.

   static  void  rte_node_next_stream_put  (struct  rte_graph  *  graph,  struct
     rte_node * node, rte_edge_t next, uint16_t idx) [inline],	[static]
     Put the next stream to pending state in the  circular  buffer  for  further
     processing. Should be invoked after rte_node_next_stream_get().

     Parameters
	 graph Graph pointer returned from rte_graph_lookup().
	 node Current node pointer.
	 next Relative next node index..
	 idx Number of objs updated in the stream after getting the stream using
	 rte_node_next_stream_get.

     See also
	 rte_node_next_stream_get().

     Definition at line 491 of file rte_graph_worker_common.h.

   static  void  rte_node_next_stream_move  (struct  rte_graph	*  graph, struct
     rte_node * src, rte_edge_t next) [inline],  [static]
     Home run scenario, Enqueue all the objs of current node to next node in op-
     timized way by swapping the streams of both nodes. Performs good when  next
     node  is  already	not in pending state. If next node is already in pending
     state then normal enqueue will be used.

     Parameters
	 graph Graph pointer returned from rte_graph_lookup().
	 src Current node pointer.
	 next Relative next node index.

     Definition at line 519 of file rte_graph_worker_common.h.

   bool rte_graph_model_is_valid (uint8_t model)
     Test the validity of model.

     Parameters
	 model Model to check.

     Returns
	 True if graph model is valid, false otherwise.

   int rte_graph_worker_model_set (uint8_t model)
     Note
	 This function does not perform any locking, and is only  safe	to  call
	 before graph running. It will set all graphs the same model.

     Parameters
	 model Name of the graph worker model.

     Returns
	 0 on success, -1 otherwise.

   uint8_t rte_graph_worker_model_get (struct rte_graph * graph)
     Get the graph worker model

     Note
	 All graph will use the same model and this function will get model from
	 the first one. Used for slow path.

     Parameters
	 graph Graph pointer.

     Returns
	 Graph worker model on success.

   static    __rte_always_inline   uint8_t   rte_graph_worker_model_no_check_get
     (struct rte_graph * graph) [static]
     Get the graph worker model without check

     Note
	 All graph will use the same model and this function will get model from
	 the first one. Used for fast path.

     Parameters
	 graph Graph pointer.

     Returns
	 Graph worker model on success.

     Definition at line 590 of file rte_graph_worker_common.h.

   static __rte_experimental void rte_node_xstat_increment  (struct  rte_node  *
     node, uint16_t xstat_id, uint64_t value) [inline],  [static]
     Increment Node xstat count.

     Increment the count of an xstat for a given node.

     Parameters
	 node Pointer to the node.
	 xstat_id xstat ID.
	 value Value to increment.

     Definition at line 609 of file rte_graph_worker_common.h.

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

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

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

home | help