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

  
 
  

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

NAME
     rte_event_ring.h

SYNOPSIS
     #include <stdint.h>
     #include <rte_common.h>
     #include <rte_ring.h>
     #include <rte_ring_elem.h>
     #include 'rte_eventdev.h'

   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_deal-
	 loc(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)

Detailed Description
     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.

Function Documentation
   static __rte_always_inline unsigned int  rte_event_ring_count  (const  struct
     rte_event_ring * r) [static]
     Returns the number of events in the ring

     Parameters
	 r pointer to the event ring

     Returns
	 the number of events in the ring

     Definition at line 50 of file rte_event_ring.h.

   static  __rte_always_inline	unsigned  int  rte_event_ring_free_count  (const
     struct rte_event_ring * r) [static]
     Returns the amount of free space in the ring

     Parameters
	 r pointer to the event ring

     Returns
	 the number of free slots in the ring, i.e. the number	of  events  that
	 can be successfully enqueued before dequeue must be called

     Definition at line 65 of file rte_event_ring.h.

   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]
     Enqueue several objects on a ring.

     This  function  calls the multi-producer or the single-producer version de-
     pending on the default behavior that was specified at  ring  creation  time
     (see flags).

     Parameters
	 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

     Returns
	 the number of objects enqueued, either 0 or n

     Definition at line 91 of file rte_event_ring.h.

   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]
     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.

     Parameters
	 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 re-
	 maining in the ring once the dequeue has completed

     Returns
	 the number of objects dequeued, either 0 or n

     Definition at line 127 of file rte_event_ring.h.

   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]
     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.

     Parameters
	 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.

     Returns
	 the number of elements, n', enqueued to the ring, 0 <= n' <= n

     Definition at line 165 of file rte_event_ring.h.

   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) [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.

     Parameters
	 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 re-
	 maining in the ring once the dequeue has completed

     Returns
	 the number of elements, n', dequeued from the ring, 0 <= n' <= n

     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.

     Parameters
	 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.

     Parameters
	 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:

	 * RING_F_SP_ENQ: If this flag is set, the default behavior  when  using
	   rte_ring_enqueue()  or  rte_ring_enqueue_bulk() is 'single-producer'.
	   Otherwise, it is 'multi-producers'.

	 * RING_F_SC_DEQ: If this flag is set, the default behavior  when  using
	   rte_ring_dequeue()  or  rte_ring_dequeue_bulk() is 'single-consumer'.
	   Otherwise, it is 'multi-consumers'.

	 * RING_F_EXACT_SZ: If this flag is set, the count parameter  is  to  be
	   taken as the exact usable size of the ring, and as such does not need
	   to be a power of 2. The underlying ring memory should be a power-of-2
	   size greater than the count value.

     Returns
	 On  success,  the pointer to the new allocated ring. NULL on error with
	 rte_errno set appropriately. Possible errno values include:

	 * E_RTE_NO_CONFIG - function could not get pointer to rte_config struc-
	   ture

	 * E_RTE_SECONDARY - function was called from a  secondary  process  in-
	   stance

	 * EINVAL - count provided is not a power of 2

	 * ENOSPC - the maximum number of memzones has already been allocated

	 * EEXIST - a memzone with the same name already exists

	 * ENOMEM - no appropriate memory area found in which to create memzone

   struct  rte_event_ring  struct  rte_event_ring * rte_event_ring_lookup (const
     char * name)
     Search for an event ring based on its name

     Parameters
	 name The name of the ring.

     Returns
	 The pointer to the ring matching the name, or NULL if not  found,  with
	 rte_errno set appropriately. Possible rte_errno values include:

	 * ENOENT - required entry not available to return.

   static unsigned int rte_event_ring_get_size (const struct rte_event_ring * r)
     [inline],	[static]
     Return the size of the event ring.

     Parameters
	 r A pointer to the ring structure.

     Returns
	 The size of the data store used by the ring. NOTE: this is not the same
	 as  the usable space in the ring. To query that use rte_ring_get_capac-
	 ity().

     Definition at line 328 of file rte_event_ring.h.

   static unsigned int rte_event_ring_get_capacity (const struct  rte_event_ring
     * r) [inline],  [static]
     Return the number of elements which can be stored in the event ring.

     Parameters
	 r A pointer to the ring structure.

     Returns
	 The usable size of the ring.

     Definition at line 342 of file rte_event_ring.h.

Author
     Generated automatically by Doxygen for DPDK from the source code.

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

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

home | help