Provided by: dpdk-doc_24.11.2-2_all 

NAME
rte_stack.h
SYNOPSIS
#include <stdalign.h> #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:.PP (RTE_MEMZONE_NAMESIZE - \ sizeof(RTE_STACK_MZ_PREFIX) + 1) The maximum length of a stack name. Definition at line 28 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 89 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 s A pointer to the stack structure. 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 Actual number of objects pushed (either 0 or n). Definition at line 111 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 s A pointer to the stack structure. obj_table A pointer to a table of void * pointers (objects). n The number of objects to pull from the stack. Returns Actual number of objects popped (either 0 or n). Definition at line 135 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 s A pointer to the stack structure. Returns The number of used entries in the stack. Definition at line 155 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 s A pointer to the stack structure. Returns The number of free entries in the stack. Definition at line 174 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 name The name of the stack. 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 On success, the pointer to the new allocated stack. NULL on error with rte_errno set appropriately. Possible errno values include: • 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 s Pointer to stack created with rte_stack_create(). If s is NULL, no operation is performed. struct rte_stack * rte_stack_lookup (const char * name) Lookup a stack by its name. Parameters name The name of the stack. Returns The pointer to the stack matching the name, or NULL if not found, with rte_errno set appropriately. Possible rte_errno values include: • ENOENT - Stack with name name not found. • EINVAL - name pointer is NULL.
Author
Generated automatically by Doxygen for DPDK from the source code. DPDK Version 24.11.2 rte_stack.h(3)