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

  
 
  

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

NAME
     rte_event_vector_adapter.h

SYNOPSIS
     #include <rte_eventdev.h>

   Data Structures
     struct rte_event_vector_adapter_conf
     struct rte_event_vector_adapter_info
     struct rte_event_vector_adapter_stats
     struct rte_event_vector_adapter

   Macros
     #define RTE_EVENT_VECTOR_ADAPTER_CAP_SOV_EOV   RTE_BIT64(0)
     #define RTE_EVENT_VECTOR_ENQ_SOV	RTE_BIT64(0)
     #define RTE_EVENT_VECTOR_ENQ_EOV	RTE_BIT64(1)
     #define RTE_EVENT_VECTOR_ENQ_FLUSH   RTE_BIT64(2)

   Typedefs
     typedef	 int(*	   rte_event_vector_adapter_port_conf_cb_t)	(uint8_t
	 event_dev_id, uint8_t *event_port_id, void *conf_arg)

   Functions
     __rte_experimental   struct   rte_event_vector_adapter   *   rte_event_vec-
	 tor_adapter_create (const struct rte_event_vector_adapter_conf *conf)
     __rte_experimental   struct   rte_event_vector_adapter   *   rte_event_vec-
	 tor_adapter_create_ext  (const   struct   rte_event_vector_adapter_conf
	 *conf, rte_event_vector_adapter_port_conf_cb_t conf_cb, void *conf_arg)
     __rte_experimental   struct   rte_event_vector_adapter   *   rte_event_vec-
	 tor_adapter_lookup (uint32_t adapter_id)
     __rte_experimental     int     rte_event_vector_adapter_destroy	 (struct
	 rte_event_vector_adapter *adapter)
     __rte_experimental     int    rte_event_vector_adapter_info_get	(uint8_t
	 event_dev_id, struct rte_event_vector_adapter_info *info)
     __rte_experimental    int	   rte_event_vector_adapter_conf_get	 (struct
	 rte_event_vector_adapter *adapter, struct rte_event_vector_adapter_conf
	 *conf)
     __rte_experimental   uint8_t   rte_event_vector_adapter_remaining	(uint8_t
	 event_dev_id, uint8_t event_queue_id)
     __rte_experimental    int	  rte_event_vector_adapter_stats_get	 (struct
	 rte_event_vector_adapter      *adapter,      struct	  rte_event_vec-
	 tor_adapter_stats *stats)
     __rte_experimental   int	 rte_event_vector_adapter_stats_reset	 (struct
	 rte_event_vector_adapter *adapter)
     __rte_experimental   int	rte_event_vector_adapter_service_id_get  (struct
	 rte_event_vector_adapter *adapter, uint32_t *service_id)
     static  __rte_experimental  int  rte_event_vector_adapter_enqueue	 (struct
	 rte_event_vector_adapter  *adapter, uint64_t objs[], uint16_t num_elem,
	 uint64_t flags)

Detailed Description
     Warning
	 EXPERIMENTAL: All functions in this file  may	be  changed  or  removed
	 without prior notice.

     Event vector adapter API.

     An event vector adapter has the following working model:

		  aaaaaaaaaaaa
		  a  Vector  aaa
	---[1]--->a adapter 0a a  [1] rte_event_vector_adapter_enqueue()
		  aaaaaaaaaaaa a
		  aaaaaaaaaaaa a   aaaaaaaaaaaa
		  a  Vector  aaa1/4aa>a  Event	 a
	---[1]--->a adapter 1a a   a  Queue 0 a
		  aaaaaaaaaaaa a   aaaaaaaaaaaa
		  aaaaaaaaaaaa a
		  a  Vector  aaa
	---[1]--->a adapter na
		  aaaaaaaaaaaa

     * A  vector adapter can be seen as an extension to event queue. It helps in
       aggregating objects and generating a vector event which	is  enqueued  to
       the event queue.

     * Multiple  vector adapters can be created on an event queue, each with its
       own unique properties such as event properties, vector size, and timeout.
       Note:	If    the     target	 event	   queue     doesn't	 support
       RTE_EVENT_QUEUE_CFG_ALL_TYPES,  then  the  vector  adapter should use the
       same schedule type as the event queue.

     * Each vector adapter aggregates 8B objects, generates a vector  event  and
       enqueues  it  to  the  event queue with the event properties mentioned in
       rte_event_vector_adapter_conf::ev.

     * After configuring the  vector  adapter,	Application  needs  to	use  the
       rte_event_vector_adapter_enqueue()  function  to  enqueue  objects  i.e.,
       mbufs/ptrs/u64s to the vector adapter. On reaching the configured  vector
       size  or  timeout,  the	vector	adapter enqueues the event vector to the
       event  queue.  Note:  Application   should   use   the	event_type   and
       sub_event_type  properly  identifying the contents of vector event on de-
       queue.

     * If the vector adapter advertises the RTE_EVENT_VECTOR_ADAPTER_CAP_SOV_EOV
       capability, application can use the RTE_EVENT_VECTOR_ENQ_[S|E]OV flags to
       indicate the start and end of a vector event.

       * When RTE_EVENT_VECTOR_ENQ_SOV is set, the vector adapter will flush any
	 aggregation in-progress and start aggregating a new vector  event  with
	 the enqueued objects.

       * When  RTE_EVENT_VECTOR_ENQ_EOV  is set, the vector adapter will add the
	 objects enqueued to the in-progress aggregation and enqueue the  vector
	 event	to the event queue, even if configured vector size or timeout is
	 not reached.

       * If both flags are set, the vector adapter will flush any aggregation in
	 progress and enqueue the objects as a new vector  event  to  the  event
	 queue.

     * If the vector adapter reaches the configured vector size, it will enqueue
       the aggregated vector event to the event queue.

     * If  the	vector	adapter  reaches  the configured vector timeout, it will
       flush the aggregated objects as a vector event if the minimum vector size
       is reached, if not it will enqueue the objs as single events to the event
       queue.

     * If the vector adapter is unable to  aggregate  the  objs  into  a  vector
       event,  it will enqueue the objs as single events to the event queue with
       the event properties mentioned in rte_event_vector_adapter_conf::ev_fall-
       back.

     Before using the vector adapter, the application has to create and  config-
     ure  an  event device and based on the event device capability it might re-
     quire creating an additional event port.

     When the application creates the vector adapter  using  the  rte_event_vec-
     tor_adapter_create()  function,  the  event  device driver capabilities are
     checked. If an in-built port is absent, the application  uses  the  default
     function to create a new event port. For finer control over event port cre-
     ation, the application should use the rte_event_vector_adapter_create_ext()
     function.

     The  application  can  enqueue one or more objs to the vector adapter using
     the rte_event_vector_adapter_enqueue() function and control the aggregation
     using the flags.

     Vector adapters report stats using the rte_event_vector_adapter_stats_get()
     function and reset the stats using  the  rte_event_vector_adapter_stats_re-
     set().

     The  application  can  destroy  the vector adapter using the rte_event_vec-
     tor_adapter_destroy() function.

     Definition in file rte_event_vector_adapter.h.

Macro Definition Documentation
   #define RTE_EVENT_VECTOR_ADAPTER_CAP_SOV_EOV   RTE_BIT64(0)
     Vector adapter supports Start of Vector (SOV) and End of Vector (EOV) flags
     in the enqueue flags.

     See also
	 RTE_EVENT_VECTOR_ENQ_SOV

	 RTE_EVENT_VECTOR_ENQ_EOV

     Definition at line 115 of file rte_event_vector_adapter.h.

   #define RTE_EVENT_VECTOR_ENQ_SOV   RTE_BIT64(0)
     Indicates the start  of  a  vector  event.  When  enqueue	is  called  with
     RTE_EVENT_VECTOR_ENQ_SOV, the vector adapter will flush any vector aggrega-
     tion in progress and start aggregating a new vector event with the enqueued
     objects.

     See also
	 RTE_EVENT_VECTOR_ADAPTER_CAP_SOV_EOV

     Definition at line 123 of file rte_event_vector_adapter.h.

   #define RTE_EVENT_VECTOR_ENQ_EOV   RTE_BIT64(1)
     Indicates	the  end  of  a  vector  event.  When  enqueue	is  called  with
     RTE_EVENT_VECTOR_ENQ_EOV, the vector adapter will add the	objects  to  any
     inprogress aggregation and flush the event vector.

     See also
	 RTE_EVENT_VECTOR_ADAPTER_CAP_SOV_EOV

     Definition at line 129 of file rte_event_vector_adapter.h.

   #define RTE_EVENT_VECTOR_ENQ_FLUSH	RTE_BIT64(2)
     Flush any in-progress vector aggregation.

     Definition at line 131 of file rte_event_vector_adapter.h.

Typedef Documentation
   typedef int(* rte_event_vector_adapter_port_conf_cb_t) (uint8_t event_dev_id,
     uint8_t *event_port_id, void *conf_arg)
     Callback function type for producer port creation.

     Definition at line 245 of file rte_event_vector_adapter.h.

Function Documentation
   __rte_experimental	 struct    rte_event_vector_adapter   *   rte_event_vec-
     tor_adapter_create (const struct rte_event_vector_adapter_conf * conf)
     Create an event vector adapter.

     This function creates an event vector adapter based on the provided config-
     uration. The adapter can be used to combine multiple mbufs/ptrs/u64s into a
     single vector event, i.e., rte_event_vector, which is then enqueued to  the
     event queue provided.

     See also
	 rte_event_vector_adapter_conf::ev::queue_id

     Parameters
	 conf Configuration for the event vector adapter.

     Returns

	 * Pointer to the created event vector adapter on success.

	 * NULL  on  failure  with  rte_errno  set  to	the error code. Possible
	   rte_errno values include:

	   * EINVAL: Invalid event device identifier specified in config.

	   * ENOMEM: Unable to allocate sufficient memory for adapter instances.

	   * ENOSPC: Maximum number of adapters already created.

   __rte_experimental	struct	 rte_event_vector_adapter    *	  rte_event_vec-
     tor_adapter_create_ext  (const struct rte_event_vector_adapter_conf * conf,
     rte_event_vector_adapter_port_conf_cb_t conf_cb, void * conf_arg)
     Create an event vector adapter with the supplied callback.

     This function can be used to have a more granular control	over  the  event
     vector  adapter  creation.  If a built-in port is absent, then the function
     uses the callback provided to create and get the port id to be  used  as  a
     producer port.

     Parameters
	 conf The event vector adapter configuration structure.
	 conf_cb The port config callback function.
	 conf_arg Opaque pointer to the argument for the callback function.

     Returns

	 * Pointer to the new allocated event vector adapter on success.

	 * NULL  on  error  with  rte_errno set appropriately Possible rte_errno
	   values include:

	 * ERANGE: vector_timeout_ns is not in supported range.

	 * ENOMEM: Unable to allocate sufficient memory for adapter instances.

	 * EINVAL: Invalid event device identifier specified in config.

	 * ENOSPC: Maximum number of adapters already created.

   __rte_experimental	struct	 rte_event_vector_adapter    *	  rte_event_vec-
     tor_adapter_lookup (uint32_t adapter_id)
     Lookup an event vector adapter using its identifier.

     This  function  returns  the  event vector adapter based on the adapter_id.
     This is useful when the adapter is created in another process and	the  ap-
     plication wants to use the adapter in the current process.

     Parameters
	 adapter_id Identifier of the event vector adapter to look up.

     Returns

	 * Pointer to the event vector adapter on success.

	 * NULL if the adapter is not found.

   __rte_experimental	   int	    rte_event_vector_adapter_destroy	 (struct
     rte_event_vector_adapter * adapter)
     Destroy an event vector adapter.

     This function releases the  resources  associated	with  the  event  vector
     adapter.

     Parameters
	 adapter Pointer to the event vector adapter to be destroyed.

     Returns

	 * 0 on success.

	 * Negative value on failure with rte_errno set to the error code.

   __rte_experimental	  int	  rte_event_vector_adapter_info_get	(uint8_t
     event_dev_id, struct rte_event_vector_adapter_info * info)
     Get the vector info of an event vector adapter.

     This function retrieves the vector info of the event vector adapter.

     Parameters
	 event_dev_id Event device identifier.
	 info Pointer to the structure where the vector info will be stored.

     Returns
	 0 on success, negative value on failure.

	 * EINVAL if the event device identifier is invalid.

	 * ENOTSUP if the event device does not support vector adapters.

   __rte_experimental	  int	  rte_event_vector_adapter_conf_get	 (struct
     rte_event_vector_adapter  * adapter, struct rte_event_vector_adapter_conf *
     conf)
     Get the configuration of an event vector adapter.

     This function retrieves the configuration of the event vector adapter.

     Parameters
	 adapter Pointer to the event vector adapter.
	 conf Pointer to the structure where the configuration will be stored.

     Returns
	 0 on success, negative value on failure.

   __rte_experimental	uint8_t   rte_event_vector_adapter_remaining	(uint8_t
     event_dev_id, uint8_t event_queue_id)
     Get the remaining event vector adapters.

     This  function  retrieves	the  number  of  remaining event vector adapters
     available for a given event device and event queue.

     Parameters
	 event_dev_id Event device identifier.
	 event_queue_id Event queue identifier.

     Returns
	 Number of remaining slots available for enqueuing events.

   __rte_experimental	  int	  rte_event_vector_adapter_stats_get	 (struct
     rte_event_vector_adapter * adapter, struct rte_event_vector_adapter_stats *
     stats)
     Get the event vector adapter statistics.

     This function retrieves the statistics of the event vector adapter.

     Parameters
	 adapter Pointer to the event vector adapter.
	 stats Pointer to the structure where the statistics will be stored.

     Returns
	 0 on success, negative value on failure.

   __rte_experimental	  int	 rte_event_vector_adapter_stats_reset	 (struct
     rte_event_vector_adapter * adapter)
     Reset the event vector adapter statistics.

     This function resets the statistics of the event vector  adapter  to  their
     default values.

     Parameters
	 adapter  Pointer to the event vector adapter whose statistics are to be
	 reset.

     Returns
	 0 on success, negative value on failure.

   __rte_experimental	int   rte_event_vector_adapter_service_id_get	 (struct
     rte_event_vector_adapter * adapter, uint32_t * service_id)
     Retrieve the service ID of the event vector adapter. If the adapter doesn't
     use an rte_service function, this function returns -ESRCH.

     Parameters
	 adapter A pointer to an event vector adapter.
	 service_id  A	pointer  to a uint32_t, to be filled in with the service
	 id.

     Returns

	 * 0: Success

	 * <0: Error code on failure

	 * -ESRCH: the adapter does not require a service to operate

   static  __rte_experimental	int   rte_event_vector_adapter_enqueue	 (struct
     rte_event_vector_adapter  *  adapter,  uint64_t  objs[], uint16_t num_elem,
     uint64_t flags) [inline],	[static]
     Enqueue objs into the event vector adapter.

     This function enqueues a specified number of objs	into  the  event  vector
     adapter.	The  objs  are	combined  into	a  single  vector  event,  i.e.,
     rte_event_vector, which is then enqueued to the event queue  configured  in
     the adapter.

     Parameters
	 adapter Pointer to the event vector adapter.
	 objs Array of objs to be enqueued.
	 num_elem Number of objs to be enqueued.
	 flags Flags to be used for the enqueue operation.

     Returns
	 Number of objs enqueued on success.

     Definition at line 455 of file rte_event_vector_adapter.h.

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

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

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

home | help