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

FreeBSD Manual Pages

  
 
  

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
       updating	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
       optimized 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 Jun	11 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_model_get&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help