table of contents
rte_graph_worker_common.h(3) | DPDK | rte_graph_worker_common.h(3) |
NAME¶
rte_graph_worker_common.h
SYNOPSIS¶
#include <rte_common.h>
#include <rte_cycles.h>
#include <rte_prefetch.h>
#include <rte_memcpy.h>
#include <rte_memory.h>
#include 'rte_graph.h'
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)
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 29 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 30 of file rte_graph_worker_common.h.
#define RTE_GRAPH_MODEL_DEFAULT RTE_GRAPH_MODEL_RTC¶
Default graph model.
Definition at line 32 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:
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 286 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:
node Current node pointer.
next Relative next node index to enqueue objs.
obj Obj to enqueue.
Definition at line 312 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:
node Current node pointer.
next Relative next node index to enqueue objs.
obj0 Obj to enqueue.
obj1 Obj to enqueue.
Definition at line 341 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:
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 375 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:
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 408 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:
node Current node pointer.
next Relative next node index to get stream.
nb_objs Requested free size of the next stream.
Returns:
See also:
Definition at line 437 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:
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:
Definition at line 467 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:
src Current node pointer.
next Relative next node index.
Definition at line 495 of file rte_graph_worker_common.h.
bool rte_graph_model_is_valid (uint8_t model)¶
Test the validity of model.
Parameters:
Returns:
int rte_graph_worker_model_set (uint8_t model)¶
Note:
Parameters:
Returns:
uint8_t rte_graph_worker_model_get (struct rte_graph * graph)¶
Get the graph worker model
Note:
Parameters:
Returns:
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:
Parameters:
Returns:
Definition at line 566 of file rte_graph_worker_common.h.
Author¶
Generated automatically by Doxygen for DPDK from the source code.
Thu May 23 2024 | Version 23.11.0 |