API Reference Manual  1.48.0
odp_schedule_group_param_t Struct Reference

Schedule group parameters. More...

#include <schedule_types.h>

Collaboration diagram for odp_schedule_group_param_t:
[legend]

Data Fields

struct {
   odp_schedule_prio_t   level [ODP_SCHED_MAX_PRIOS]
 Priority levels to be supported by the group. More...
 
   uint32_t   num
 Number of entries in 'level' array. More...
 
prio
 Group specific priority configuration.
 
struct {
   odp_cache_stash_config_t   common
 Common group specific cache stashing hints. More...
 
   struct {
      const odp_cache_stash_prio_config_t *   prio
 Pointer to 'num' entries of priority specific configuration. More...
 
      uint32_t   num
 Number of entries in 'prio' array. More...
 
   } 
 Priority specific cache stashing hints. More...
 
cache_stash_hints
 Group specific cache stashing hints. More...
 

Detailed Description

Schedule group parameters.

Examples
odp_sched_perf.c.

Definition at line 397 of file api/spec/schedule_types.h.

Field Documentation

◆ level

odp_schedule_prio_t odp_schedule_group_param_t::level[ODP_SCHED_MAX_PRIOS]

Priority levels to be supported by the group.

Array of priority levels to be supported by the group. The level range can be non-contiguous, must have unique values and must always be in ascending order, i.e., minimum priority level must be as the first element and maximum priority level as the last element.

Additionally, each priority level must be within the global priority range. During odp_schedule_config() the range is from odp_schedule_capability_t::min_prio to odp_schedule_capability_t::max_prios - 1. During odp_schedule_group_create_2() the range is from odp_schedule_min_prio() to odp_schedule_max_prio().

When creating a queue belonging to a schedule group with a group specific priority configuration, the used scheduler priority level (odp_schedule_param_t::prio) must be within the group specific range.

The field is ignored if 'num' is 0.

Definition at line 422 of file api/spec/schedule_types.h.

◆ num

uint32_t odp_schedule_group_param_t::num

Number of entries in 'level' array.

Number of entries in 'prio' array.

When 0, the global priority range (see odp_schedule_config_t::prio) is used with this group. 0 by default.

0 by default.

Definition at line 430 of file api/spec/schedule_types.h.

◆ common

odp_cache_stash_config_t odp_schedule_group_param_t::common

Common group specific cache stashing hints.

Configures cache stashing for each priority under the group. By default, all regions are disabled (see odp_cache_stash_config_t::regions).

Examples
odp_sched_perf.c.

Definition at line 512 of file api/spec/schedule_types.h.

◆ prio

const odp_cache_stash_prio_config_t* odp_schedule_group_param_t::prio

Pointer to 'num' entries of priority specific configuration.

The field is ignored if 'num' is 0.

Definition at line 526 of file api/spec/schedule_types.h.

◆ 

struct { ... } odp_schedule_group_param_t::cache_stash_hints

Group specific cache stashing hints.

Depending on the implementation, configuring these may improve performance. Cache stashing hints can be configured with a group-wide configuration using 'common' and with optional priority specific exceptions using 'prio' and 'num'. For example:

...
odp_schedule_group_param_t param;
odp_cache_stash_prio_config_t prio;
odp_schedule_group_param_init(&param);
prio.prio = 3;
prio.config.regions.event_user_area_l2 = 1;
prio.config.event_user_area.l2.offset = 0;
prio.config.event_user_area.l2.len = 64;
param.cache_stash_hints.prio = &prio;
param.cache_stash_hints.num = 1;
...

would disable cache stashing entirely for the group except priority 3 would have event user area L2 cache stashing enabled.

...
odp_schedule_group_param_t param;
odp_cache_stash_prio_config_t prio;
odp_schedule_group_param_init(&param);
param.cache_stash_hints.common.regions.event_data_l2 = 1;
param.cache_stash_hints.common.event_data.l2.offset = 0;
param.cache_stash_hints.common.event_data.l2.len = 128;
prio.prio = 3;
prio.config.regions.all = 0;
param.cache_stash_hints.prio = &prio;
param.cache_stash_hints.num = 1;
...

would enable event data L2 cache stashing entirely for the group except disable cache stashing for priority 3.

...
odp_schedule_group_param_t param;
odp_cache_stash_prio_config_t prio[2];
odp_schedule_group_param_init(&param);
param.cache_stash_hints.common.regions.event_data_l2 = 1;
param.cache_stash_hints.common.event_data.l2.offset = 0;
param.cache_stash_hints.common.event_data.l2.len = 128;
prio[0].prio = 3;
prio[0].config.regions.event_data_l2 = 1;
prio[0].config.event_data.l2.offset = 64;
prio[0].config.event_data.l2.len = 128;
prio[1].prio = 4;
prio[1].config.regions.event_data_l2 = 1;
prio[1].config.event_data.l2.offset = 64;
prio[1].config.event_data.l2.len = 128;
param.cache_stash_hints.prio = prio;
param.cache_stash_hints.num = 2;
...

would enable event data L2 cache stashing entirely for the group but priorities 3 and 4 would have event data cache stashing beginning from offset 64 instead of 0.

Examples
odp_sched_perf.c.

The documentation for this struct was generated from the following file: