API Reference Manual  1.50.0
api/spec/queue_types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright (c) 2018 Linaro Limited
3  * Copyright (c) 2024-2025 Nokia
4  */
5 
12 #ifndef ODP_API_SPEC_QUEUE_TYPES_H_
13 #define ODP_API_SPEC_QUEUE_TYPES_H_
14 #include <odp/visibility_begin.h>
15 
18 #include <odp/api/schedule_types.h>
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
46 typedef enum odp_queue_type_t {
52 
59 
68 
70 
74 typedef enum odp_queue_op_mode_t {
81 
89 
99 
101 
130 typedef enum odp_nonblocking_t {
135 
141 
147 
149 
166 typedef enum odp_queue_order_t {
172 
178 
180 
184 typedef struct odp_queue_capability_t {
188  uint32_t max_queues;
189 
191  struct {
194  uint32_t max_num;
195 
200  uint32_t max_size;
201 
204 
208  struct {
211  uint32_t max_num;
212 
215  uint32_t max_size;
216 
219 
221 
225  struct {
228  uint32_t max_num;
229 
232  uint32_t max_size;
233 
236 
238 
241 
242  } plain;
243 
245 
249 typedef struct odp_queue_param_t {
255 
262 
275 
281 
287 
294 
302  void *context;
303 
309  uint32_t context_len;
310 
317  uint32_t size;
318 
338  uint32_t num_aggr;
339 
348 
350 
354 typedef struct odp_queue_info_t {
356  const char *name;
357 
360 
370 
378 
380 
384 typedef struct odp_aggr_enq_param_t {
398  uint8_t start_of_vector :1;
399 
411  uint8_t end_of_vector :1;
412 
414 
425 typedef struct odp_aggr_enq_profile_t {
427  enum {
430 
436 
442 
445  } type;
446 
453  uintptr_t param;
455 
460 #ifdef __cplusplus
461 }
462 #endif
463 
464 #include <odp/visibility_end.h>
465 #endif
ODP event vector API type definitions.
ODP schedule.
struct odp_aggr_enq_param_t odp_aggr_enq_param_t
Event aggregator enqueuing parameters.
odp_nonblocking_t
Non-blocking level.
struct odp_queue_info_t odp_queue_info_t
Queue information.
struct odp_aggr_enq_profile_t odp_aggr_enq_profile_t
Event aggregator enqueuing profile.
odp_queue_type_t
Queue type.
struct odp_queue_param_t odp_queue_param_t
ODP Queue parameters.
odp_queue_op_mode_t
Queue operation mode.
odp_queue_order_t
Original event order maintenance options.
struct odp_queue_capability_t odp_queue_capability_t
Queue capabilities.
@ ODP_NONBLOCKING_WF
Non-blocking and wait-free implementation.
@ ODP_BLOCKING
Blocking implementation.
@ ODP_NONBLOCKING_LF
Non-blocking and lock-free implementation.
@ ODP_QUEUE_TYPE_SCHED
Scheduled queue.
@ ODP_QUEUE_TYPE_PLAIN
Plain queue.
@ ODP_QUEUE_TYPE_AGGR
Aggregator queue.
@ ODP_QUEUE_OP_MT
Multithread safe operation.
@ ODP_QUEUE_OP_DISABLED
Disabled.
@ ODP_QUEUE_OP_MT_UNSAFE
Not multithread safe operation.
@ ODP_QUEUE_ORDER_KEEP
Keep original event order.
@ ODP_QUEUE_ORDER_IGNORE
Ignore original event order.
Event aggregator enqueuing parameters.
uint8_t end_of_vector
The event being enqueued is the last event of related events.
uint8_t start_of_vector
The event being enqueued is the first event of related events.
Event aggregator enqueuing profile.
enum odp_aggr_enq_profile_t::@157 type
Profile type.
uintptr_t param
Additional implementation specific parameter for the ODP_AEP_TYPE_CUSTOM profile type.
@ ODP_AEP_TYPE_NONE
Default enqueuing behaviour with no hints being passed.
@ ODP_AEP_TYPE_IPV4_FRAG
Try to get fragments of the same IPv4 packet into the same vector by enqueuing the first and last fra...
@ ODP_AEP_TYPE_CUSTOM
Implementation specific behaviour.
@ ODP_AEP_TYPE_IPV6_FRAG
Try to get fragments of the same IPv6 packet into the same vector by enqueuing the first and last fra...
Event aggregator capabilities.
Event vector configuration.
uint32_t max_size
Maximum number of events a plain (ODP_BLOCKING) queue can store simultaneously.
uint32_t max_num
Maximum number of plain (ODP_BLOCKING) queues of the default size.
struct odp_queue_capability_t::@154::@155 lockfree
Lock-free (ODP_NONBLOCKING_LF) implementation capabilities.
struct odp_queue_capability_t::@154::@156 waitfree
Wait-free (ODP_NONBLOCKING_WF) implementation capabilities.
uint32_t max_queues
Maximum number of event queues of any type (default size).
struct odp_queue_capability_t::@154 plain
Plain queue capabilities.
odp_queue_stats_opt_t stats
Supported statistics counters.
odp_event_aggr_capability_t aggr
Event vector generation capabilities.
Queue information.
odp_queue_type_t type
Queue type.
odp_queue_param_t param
Queue parameters.
const char * name
Queue name.
odp_event_aggr_config_t aggr_config
Event aggregator configuration.
ODP Queue parameters.
odp_schedule_param_t sched
Scheduler parameters.
odp_queue_order_t order
Original event order maintenance.
odp_queue_op_mode_t enq_mode
Enqueue mode.
uint32_t size
Queue size.
odp_queue_type_t type
Queue type.
uint32_t context_len
Queue context data length.
void * context
Queue context pointer.
odp_queue_op_mode_t deq_mode
Dequeue mode.
const odp_event_aggr_config_t * aggr
Event aggregator configuration parameters.
odp_nonblocking_t nonblocking
Non-blocking level.
uint32_t num_aggr
Number of event aggregators.
Scheduler parameters.
Queue statistics counters options.