DPDK 25.03.0-rc0
|
#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"
Go to the source code of this file.
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) |
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.
#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.
|
inlinestatic |
Enqueue the objs to next node for further processing and set the next node to pending state in the circular buffer.
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 307 of file rte_graph_worker_common.h.
|
inlinestatic |
Enqueue only one obj to next node for further processing and set the next node to pending state in the circular buffer.
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 333 of file rte_graph_worker_common.h.
|
inlinestatic |
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.
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 362 of file rte_graph_worker_common.h.
|
inlinestatic |
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.
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 396 of file rte_graph_worker_common.h.
|
inlinestatic |
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].
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 429 of file rte_graph_worker_common.h.
|
inlinestatic |
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.
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. |
Definition at line 458 of file rte_graph_worker_common.h.
|
inlinestatic |
Put the next stream to pending state in the circular buffer for further processing. Should be invoked after rte_node_next_stream_get().
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. |
Definition at line 488 of file rte_graph_worker_common.h.
|
inlinestatic |
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.
graph | Graph pointer returned from rte_graph_lookup(). |
src | Current node pointer. |
next | Relative next node index. |
Definition at line 516 of file rte_graph_worker_common.h.
bool rte_graph_model_is_valid | ( | uint8_t | model | ) |
Test the validity of model.
model | Model to check. |
int rte_graph_worker_model_set | ( | uint8_t | model | ) |
model | Name of the graph worker model. |
uint8_t rte_graph_worker_model_get | ( | struct rte_graph * | graph | ) |
Get the graph worker model
graph | Graph pointer. |
|
static |
Get the graph worker model without check
graph | Graph pointer. |
Definition at line 587 of file rte_graph_worker_common.h.
|
inlinestatic |
Increment Node xstat count.
Increment the count of an xstat for a given node.
node | Pointer to the node. |
xstat_id | xstat ID. |
value | Value to increment. |
Definition at line 606 of file rte_graph_worker_common.h.