DPDK  25.11.0
rte_event_vector_adapter.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2025 Marvell International Ltd.
3  * All rights reserved.
4  */
5 
6 #ifndef _RTE_EVENT_VECTOR_ADAPTER_H_
7 #define _RTE_EVENT_VECTOR_ADAPTER_H_
8 
103 #include <rte_eventdev.h>
104 
105 #ifdef __cplusplus
106 extern "C" {
107 #endif
108 
109 #define RTE_EVENT_VECTOR_ADAPTER_CAP_SOV_EOV RTE_BIT64(0)
117 #define RTE_EVENT_VECTOR_ENQ_SOV RTE_BIT64(0)
124 #define RTE_EVENT_VECTOR_ENQ_EOV RTE_BIT64(1)
130 #define RTE_EVENT_VECTOR_ENQ_FLUSH RTE_BIT64(2)
137  uint8_t event_dev_id;
139  uint32_t socket_id;
141  struct rte_event ev;
154  struct rte_event ev_fallback;
164  uint16_t vector_sz;
184 };
185 
192  uint16_t min_vector_sz;
194  uint16_t max_vector_sz;
200  uint8_t log2_sz;
202 };
203 
208  uint64_t vectorized;
212  uint64_t vectors_flushed;
214  uint64_t alloc_failures;
216 };
217 
219 
220 typedef int (*rte_event_vector_adapter_enqueue_t)(struct rte_event_vector_adapter *adapter,
221  uint64_t objs[], uint16_t num_elem,
222  uint64_t flags);
229  rte_event_vector_adapter_enqueue_t enqueue;
231  struct rte_event_vector_adapter_data *data;
233  const struct event_vector_adapter_ops *ops;
236  uint32_t adapter_id;
238  uint8_t used : 1;
240 };
241 
245 typedef int (*rte_event_vector_adapter_port_conf_cb_t)(uint8_t event_dev_id, uint8_t *event_port_id,
246  void *conf_arg);
247 
267 __rte_experimental
270 
294 __rte_experimental
298  void *conf_arg);
299 
313 __rte_experimental
316 
328 __rte_experimental
329 int
331 
346 __rte_experimental
347 int
349  struct rte_event_vector_adapter_info *info);
350 
363 __rte_experimental
364 int
366  struct rte_event_vector_adapter_conf *conf);
367 
381 __rte_experimental
382 uint8_t
383 rte_event_vector_adapter_remaining(uint8_t event_dev_id, uint8_t event_queue_id);
384 
397 __rte_experimental
398 int
400  struct rte_event_vector_adapter_stats *stats);
401 
412 __rte_experimental
413 int
415 
430 __rte_experimental
431 int
433  uint32_t *service_id);
434 
453 __rte_experimental
454 static inline int
456  uint16_t num_elem, uint64_t flags)
457 {
458 #ifdef RTE_LIBRTE_EVENTDEV_DEBUG
459  if (adapter == NULL) {
460  rte_errno = EINVAL;
461  return 0;
462  }
463 
464  if (adapter->used == false) {
465  rte_errno = EINVAL;
466  return 0;
467  }
468 #endif
469  return adapter->enqueue(adapter, objs, num_elem, flags);
470 }
471 
472 #ifdef __cplusplus
473 }
474 #endif
475 
476 #endif /* _RTE_EVENT_VECTOR_ADAPTER_H_ */
#define __rte_cache_aligned
Definition: rte_common.h:739
#define rte_errno
Definition: rte_errno.h:29
__rte_experimental struct rte_event_vector_adapter * rte_event_vector_adapter_create_ext(const struct rte_event_vector_adapter_conf *conf, rte_event_vector_adapter_port_conf_cb_t conf_cb, void *conf_arg)
int(* rte_event_vector_adapter_port_conf_cb_t)(uint8_t event_dev_id, uint8_t *event_port_id, void *conf_arg)
__rte_experimental int rte_event_vector_adapter_stats_get(struct rte_event_vector_adapter *adapter, struct rte_event_vector_adapter_stats *stats)
__rte_experimental int rte_event_vector_adapter_conf_get(struct rte_event_vector_adapter *adapter, struct rte_event_vector_adapter_conf *conf)
__rte_experimental int rte_event_vector_adapter_stats_reset(struct rte_event_vector_adapter *adapter)
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)
__rte_experimental struct rte_event_vector_adapter * rte_event_vector_adapter_lookup(uint32_t adapter_id)
__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_destroy(struct rte_event_vector_adapter *adapter)
__rte_experimental struct rte_event_vector_adapter * rte_event_vector_adapter_create(const struct rte_event_vector_adapter_conf *conf)
__rte_experimental int rte_event_vector_adapter_service_id_get(struct rte_event_vector_adapter *adapter, uint32_t *service_id)
__rte_experimental uint8_t rte_event_vector_adapter_remaining(uint8_t event_dev_id, uint8_t event_queue_id)
const struct event_vector_adapter_ops * ops
struct rte_event_vector_adapter_data * data
rte_event_vector_adapter_enqueue_t enqueue