table of contents
rte_stack.h(3) | DPDK | rte_stack.h(3) |
NAME¶
rte_stack.h
SYNOPSIS¶
#include <rte_debug.h>
#include <rte_errno.h>
#include <rte_memzone.h>
#include <rte_spinlock.h>
#include 'rte_stack_std.h'
#include 'rte_stack_lf.h'
Macros¶
#define RTE_STACK_NAMESIZE
#define RTE_STACK_F_LF 0x0001
Functions¶
static __rte_always_inline unsigned int
rte_stack_push (struct rte_stack *s, void *const *obj_table, unsigned
int n)
static __rte_always_inline unsigned int rte_stack_pop (struct
rte_stack *s, void **obj_table, unsigned int n)
static __rte_always_inline unsigned int rte_stack_count (struct
rte_stack *s)
static __rte_always_inline unsigned int rte_stack_free_count
(struct rte_stack *s)
struct rte_stack * rte_stack_create (const char *name, unsigned int
count, int socket_id, uint32_t flags)
void rte_stack_free (struct rte_stack *s)
struct rte_stack * rte_stack_lookup (const char *name)
Detailed Description¶
RTE Stack.
librte_stack provides an API for configuration and use of a bounded stack of pointers. Push and pop operations are MT-safe, allowing concurrent access, and the interface supports pushing and popping multiple pointers at a time.
Definition in file rte_stack.h.
Macro Definition Documentation¶
#define RTE_STACK_NAMESIZE¶
Value:
(RTE_MEMZONE_NAMESIZE - sizeof(RTE_STACK_MZ_PREFIX) + 1)The maximum length of a stack name.
Definition at line 30 of file rte_stack.h.
#define RTE_STACK_F_LF 0x0001¶
The stack uses lock-free push and pop functions. This flag is only supported on x86_64 or arm64 platforms, currently.
Definition at line 91 of file rte_stack.h.
Function Documentation¶
static __rte_always_inline unsigned int rte_stack_push (struct rte_stack * s, void *const * obj_table, unsigned int n) [static]¶
Push several objects on the stack (MT-safe).
Parameters:
obj_table A pointer to a table of void * pointers (objects).
n The number of objects to push on the stack from the obj_table.
Returns:
Definition at line 109 of file rte_stack.h.
static __rte_always_inline unsigned int rte_stack_pop (struct rte_stack * s, void ** obj_table, unsigned int n) [static]¶
Pop several objects from the stack (MT-safe).
Parameters:
obj_table A pointer to a table of void * pointers (objects).
n The number of objects to pull from the stack.
Returns:
Definition at line 133 of file rte_stack.h.
static __rte_always_inline unsigned int rte_stack_count (struct rte_stack * s) [static]¶
Return the number of used entries in a stack.
Parameters:
Returns:
Definition at line 153 of file rte_stack.h.
static __rte_always_inline unsigned int rte_stack_free_count (struct rte_stack * s) [static]¶
Return the number of free entries in a stack.
Parameters:
Returns:
Definition at line 172 of file rte_stack.h.
struct rte_stack* rte_stack_create (const char * name, unsigned int count, int socket_id, uint32_t flags)¶
Create a new stack named name in memory.
This function uses memzone_reserve() to allocate memory for a stack of size count. The behavior of the stack is controlled by the flags.
Parameters:
count The size of the stack.
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:
- •
- RTE_STACK_F_LF: If this flag is set, the stack uses lock-free variants of the push and pop functions. Otherwise, it achieves thread-safety using a lock.
Returns:
- ENOSPC - the maximum number of memzones has already been allocated
- EEXIST - a stack with the same name already exists
- ENOMEM - insufficient memory to create the stack
- ENAMETOOLONG - name size exceeds RTE_STACK_NAMESIZE
- ENOTSUP - platform does not support given flags combination.
void rte_stack_free (struct rte_stack * s)¶
Free all memory used by the stack.
Parameters:
struct rte_stack* rte_stack_lookup (const char * name)¶
Lookup a stack by its name.
Parameters:
Returns:
- ENOENT - Stack with name name not found.
- EINVAL - name pointer is NULL.
Author¶
Generated automatically by Doxygen for DPDK from the source code.
Thu May 23 2024 | Version 23.11.0 |