Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_stack.h(3)			      DPDK			  rte_stack.h(3)

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
     struct __rte_aligned (16) rte_stack_lf_head
     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  ac-
     cess, 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 sup-
     ported on x86_64 or arm64 platforms, currently.

     Definition at line 89 of file rte_stack.h.

Function Documentation
   struct __rte_aligned (16)
     < Stack top

     < Modification counter for avoiding ABA problem

     Definition at line 1 of file rte_stack.h.

   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 vari-
	   ants 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.

Version 25.11.0 		 Thu Aug 27 2026		  rte_stack.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_STACK_NAMESIZE&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help