DPDK
25.03.0
|
#include <stdint.h>
#include <rte_common.h>
#include <rte_ring.h>
#include <rte_ring_elem.h>
#include "rte_eventdev.h"
Go to the source code of this file.
Data Structures | |
struct | rte_event_ring |
Functions | |
static __rte_always_inline unsigned int | rte_event_ring_count (const struct rte_event_ring *r) |
static __rte_always_inline unsigned int | rte_event_ring_free_count (const struct rte_event_ring *r) |
static __rte_always_inline unsigned int | rte_event_ring_enqueue_bulk (struct rte_event_ring *r, const struct rte_event *events, unsigned int n, uint16_t *free_space) |
static __rte_always_inline unsigned int | rte_event_ring_dequeue_bulk (struct rte_event_ring *r, struct rte_event *events, unsigned int n, uint16_t *available) |
static __rte_always_inline unsigned int | rte_event_ring_enqueue_burst (struct rte_event_ring *r, const struct rte_event *events, unsigned int n, uint16_t *free_space) |
static __rte_always_inline unsigned int | rte_event_ring_dequeue_burst (struct rte_event_ring *r, struct rte_event *events, unsigned int n, uint16_t *available) |
void | rte_event_ring_free (struct rte_event_ring *r) |
struct rte_event_ring * | rte_event_ring_create (const char *name, unsigned int count, int socket_id, unsigned int flags) __rte_malloc __rte_dealloc(rte_event_ring_free |
struct rte_event_ring struct rte_event_ring * | rte_event_ring_lookup (const char *name) |
static unsigned int | rte_event_ring_get_size (const struct rte_event_ring *r) |
static unsigned int | rte_event_ring_get_capacity (const struct rte_event_ring *r) |
RTE Event Ring
This provides a ring implementation for passing rte_event structures from one core to another.
Definition in file rte_event_ring.h.
|
static |
Returns the number of events in the ring
r | pointer to the event ring |
Definition at line 50 of file rte_event_ring.h.
|
static |
Returns the amount of free space in the ring
r | pointer to the event ring |
Definition at line 65 of file rte_event_ring.h.
|
static |
Enqueue several objects on a ring.
This function calls the multi-producer or the single-producer version depending on the default behavior that was specified at ring creation time (see flags).
r | pointer to the event ring |
events | pointer to an array of struct rte_event objects |
n | The number of events in the array to enqueue |
free_space | if non-NULL, returns the amount of space in the ring after the enqueue operation has completed |
Definition at line 91 of file rte_event_ring.h.
|
static |
Dequeue a set of events from a ring
Note: this API does not work with pointers to events, rather it copies the events themselves to the destination events
buffer.
r | pointer to the event ring |
events | pointer to an array to hold the struct rte_event objects |
n | number of events that can be held in the events array |
available | if non-null, is updated to indicate the number of events remaining in the ring once the dequeue has completed |
Definition at line 127 of file rte_event_ring.h.
|
static |
Enqueue a set of events onto a ring
Note: this API enqueues by copying the events themselves onto the ring, rather than just placing a pointer to each event onto the ring. This means that statically-allocated events can safely be enqueued by this API.
r | pointer to the event ring |
events | pointer to an array of struct rte_event objects |
n | number of events in the array to enqueue |
free_space | if non-null, is updated to indicate the amount of free space in the ring once the enqueue has completed. |
Definition at line 165 of file rte_event_ring.h.
|
static |
Dequeue a set of events from a ring
Note: this API does not work with pointers to events, rather it copies the events themselves to the destination events
buffer.
r | pointer to the event ring |
events | pointer to an array to hold the struct rte_event objects |
n | number of events that can be held in the events array |
available | if non-null, is updated to indicate the number of events remaining in the ring once the dequeue has completed |
Definition at line 201 of file rte_event_ring.h.
void rte_event_ring_free | ( | struct rte_event_ring * | r | ) |
De-allocate all memory used by the ring.
r | Pointer to ring to created with rte_event_ring_create(). If r is NULL, no operation is performed. |
struct rte_event_ring* rte_event_ring_create | ( | const char * | name, |
unsigned int | count, | ||
int | socket_id, | ||
unsigned int | flags | ||
) |
Create an event ring structure
This function allocates memory and initializes an event ring inside that memory.
name | name to be given to the ring |
count | the number of elements to be stored in the ring. If the flag RING_F_EXACT_SZ is not set, this must be a power of 2, and the actual usable space in the ring will be count - 1 entries. If the flag RING_F_EXACT_SZ is set, the this can be any value up to the ring size limit - 1, and the usable space will be exactly that requested. |
socket_id | The socket_id argument is the socket identifier in case of NUMA. The value can be SOCKET_ID_ANY if there is no NUMA constraint for the reserved zone. |
flags | An OR of the following:
|
struct rte_event_ring struct rte_event_ring* rte_event_ring_lookup | ( | const char * | name | ) |
Search for an event ring based on its name
name | The name of the ring. |
|
inlinestatic |
Return the size of the event ring.
r | A pointer to the ring structure. |
rte_ring_get_capacity()
. Definition at line 328 of file rte_event_ring.h.
|
inlinestatic |
Return the number of elements which can be stored in the event ring.
r | A pointer to the ring structure. |
Definition at line 342 of file rte_event_ring.h.