API Reference Manual  1.50.0
api/spec/schedule_types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright (c) 2015-2018 Linaro Limited
3  * Copyright (c) 2023-2025 Nokia
4  */
5 
12 #ifndef ODP_API_SPEC_SCHEDULE_TYPES_H_
13 #define ODP_API_SPEC_SCHEDULE_TYPES_H_
14 #include <odp/visibility_begin.h>
15 
18 #include <odp/api/std_types.h>
19 #include <odp/api/thrmask.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
186 
188 typedef struct odp_schedule_param_t {
196 
201 
206 
210  uint32_t lock_count;
212 
219 
224  uint32_t max_groups;
225 
231  uint32_t max_group_prios;
232 
237 
239  uint32_t max_prios;
240 
243  uint32_t max_queues;
244 
249  uint32_t max_queue_size;
250 
253 
260  uint32_t max_flow_id;
261 
265 
269 
273 
276 
278 
288 typedef struct odp_cache_stash_region_t {
290  struct {
296  uint32_t offset;
297 
303  uint32_t len;
304 
305  } l2;
306 
308  struct {
314  uint32_t offset;
315 
321  uint32_t len;
322 
323  } l3;
324 
326 
332 typedef struct odp_cache_stash_config_t {
334  union {
336  struct {
338  uint32_t event_metadata_l2 : 1;
339 
341  uint32_t event_metadata_l3 : 1;
342 
344  uint32_t event_data_l2 : 1;
345 
347  uint32_t event_data_l3 : 1;
348 
350  uint32_t event_user_area_l2 : 1;
351 
353  uint32_t event_user_area_l3 : 1;
354 
356  uint32_t queue_context_l2 : 1;
357 
359  uint32_t queue_context_l3 : 1;
360 
361  };
362 
368  uint32_t all;
369 
371 
374 
377 
380 
383 
385 
392 
395 
397 
403  struct {
427 
434  uint32_t num;
435 
436  } prio;
437 
509  struct {
517 
524  struct {
531 
536  uint32_t num;
537 
538  };
539 
541 
543 
547 typedef struct odp_schedule_config_t {
561  uint32_t num_groups;
562 
588  uint32_t num_group_prios;
589 
602  struct {
613 
618  uint32_t num;
619 
620  } prio;
621 
626  uint32_t num_queues;
627 
634  uint32_t queue_size;
635 
651  uint32_t max_flow_id;
652 
658  struct {
665 
672 
679 
682 
685 
688 
690 
692 
698  const char *name;
699 
702 
704  int num;
705 
711 
713 
718 #ifdef __cplusplus
719 }
720 #endif
721 
722 #include <odp/visibility_end.h>
723 #endif
ODP event vector API type definitions.
Standard C language types and definitions for ODP.
ODP thread masks.
int odp_schedule_sync_t
Scheduler synchronization method.
struct odp_cache_stash_prio_config_t odp_cache_stash_prio_config_t
Priority specific cache stashing configuration.
int odp_schedule_prio_t
Scheduling priority level.
int odp_schedule_group_t
Scheduler thread group.
#define ODP_SCHED_MAX_PRIOS
Maximum number of scheduling priorities supported by the API.
struct odp_cache_stash_region_t odp_cache_stash_region_t
Region specific cache stashing configuration.
struct odp_schedule_group_param_t odp_schedule_group_param_t
Schedule group parameters.
struct odp_schedule_config_t odp_schedule_config_t
Schedule configuration.
struct odp_schedule_param_t odp_schedule_param_t
Scheduler parameters.
struct odp_schedule_capability_t odp_schedule_capability_t
Scheduler capabilities.
struct odp_cache_stash_config_t odp_cache_stash_config_t
Cache stashing configuration.
struct odp_schedule_group_info_t odp_schedule_group_info_t
Schedule group information.
bool odp_bool_t
Boolean type.
odp_support_t
ODP support.
Cache stashing configuration.
uint32_t event_data_l2
Enable/disable event_data L2 cache stashing.
uint32_t queue_context_l2
Enable/disable queue_context L2 cache stashing.
uint32_t event_metadata_l3
Enable/disable event_metadata L3 cache stashing.
uint32_t event_metadata_l2
Enable/disable event_metadata L2 cache stashing.
union odp_cache_stash_config_t::@160 regions
Region specific configuration toggle.
uint32_t queue_context_l3
Enable/disable queue_context L3 cache stashing.
odp_cache_stash_region_t event_user_area
Cache stashing for event user area.
uint32_t event_data_l3
Enable/disable event_data L3 cache stashing.
odp_cache_stash_region_t event_data
Cache stashing for event data.
uint32_t all
All bits of the bit field structure.
uint32_t event_user_area_l2
Enable/disable event_user_area L2 cache stashing.
odp_cache_stash_region_t event_metadata
Cache stashing for event metadata.
odp_cache_stash_region_t queue_context
Cache stashing for queue context region.
uint32_t event_user_area_l3
Enable/disable event_user_area L3 cache stashing.
Priority specific cache stashing configuration.
odp_cache_stash_config_t config
Cache stashing configuration.
odp_schedule_prio_t prio
Priority level for applying this cache stashing configuration to.
Region specific cache stashing configuration.
uint32_t len
Length in bytes to cache.
uint32_t offset
Byte offset into a region to start caching from.
struct odp_cache_stash_region_t::@158 l2
L2 cache stashing.
struct odp_cache_stash_region_t::@159 l3
L3 cache stashing.
Event aggregator capabilities.
uint32_t max_flow_id
Maximum flow ID per queue.
odp_support_t order_wait
Order wait support.
uint32_t max_groups
Maximum number of scheduling groups.
uint32_t max_queues
Maximum number of scheduled (ODP_BLOCKING) queues of the default size.
odp_support_t waitfree_queues
Wait-free (ODP_NONBLOCKING_WF) queues support.
odp_support_t lockfree_queues
Lock-free (ODP_NONBLOCKING_LF) queues support.
uint32_t max_queue_size
Maximum number of events a scheduled (ODP_BLOCKING) queue can store simultaneously.
odp_schedule_prio_t min_prio
Minimum scheduling priority value.
uint32_t max_group_prios
Maximum simultaneous number of group and priority combinations.
odp_queue_stats_opt_t queue_stats
Supported queue statistics counters.
uint32_t max_ordered_locks
Maximum number of ordered locks per queue.
uint32_t max_prios
Number of scheduling priorities.
odp_event_aggr_capability_t aggr
Event aggregator capabilities for scheduled queues.
Schedule configuration.
odp_bool_t worker
ODP_SCHED_GROUP_WORKER.
uint32_t num_queues
Maximum number of scheduled queues to be supported.
odp_bool_t control
ODP_SCHED_GROUP_CONTROL.
odp_schedule_group_param_t control_param
Parameters for ODP_SCHED_GROUP_CONTROL schedule group.
odp_schedule_prio_t min
Minimum priority level to be supported.
odp_schedule_group_param_t all_param
Parameters for ODP_SCHED_GROUP_ALL schedule group.
struct odp_schedule_config_t::@168 sched_group
Enable/disable predefined scheduling groups.
uint32_t num
Maximum number of priorities to be supported.
uint32_t num_group_prios
Maximum simultaneous number of group and priority combinations to be supported.
odp_bool_t all
ODP_SCHED_GROUP_ALL.
uint32_t queue_size
Maximum number of events required to be stored simultaneously in scheduled queue.
struct odp_schedule_config_t::@167 prio
Priority range configuration.
uint32_t num_groups
Maximum number of schedule groups to be supported.
uint32_t max_flow_id
Maximum flow ID per queue.
odp_schedule_group_param_t worker_param
Parameters for ODP_SCHED_GROUP_WORKER schedule group.
Schedule group information.
int num
Number of group specific priority levels in 'level'.
const char * name
Schedule group name.
odp_schedule_prio_t level[ODP_SCHED_MAX_PRIOS]
Group specific priority levels.
odp_thrmask_t thrmask
Thread mask of the schedule group.
Schedule group parameters.
odp_cache_stash_config_t common
Common group specific cache stashing hints.
odp_schedule_prio_t level[ODP_SCHED_MAX_PRIOS]
Priority levels to be supported by the group.
struct odp_schedule_group_param_t::@163 prio
Group specific priority configuration.
const odp_cache_stash_prio_config_t * prio
Pointer to 'num' entries of priority specific configuration.
struct odp_schedule_group_param_t::@164 cache_stash_hints
Group specific cache stashing hints.
uint32_t num
Number of entries in 'level' array.
Scheduler parameters.
odp_schedule_group_t group
Thread group.
odp_schedule_prio_t prio
Priority level.
uint32_t lock_count
Ordered lock count for this queue.
odp_schedule_sync_t sync
Synchronization method.
Queue statistics counters options.