|
Sound Open Firmware
|
Generic scheduler interface, scheduler operations, and task management. More...


Go to the source code of this file.
Data Structures | |
| struct | scheduler_ops |
| Scheduler operations interface table. More... | |
| struct | schedule_data |
| Descriptor container representing a registered scheduler instance. More... | |
| struct | schedulers |
| Container holding the linked list of all registered schedulers on a core. More... | |
Macros | |
| #define | SOF_SCHEDULER_FREE_IRQ_ONLY BIT(0) |
| Scheduler free available flags. | |
Enumerations | |
| enum | { SOF_SCHEDULE_EDF = 0 , SOF_SCHEDULE_LL_TIMER , SOF_SCHEDULE_LL_DMA , SOF_SCHEDULE_DP , SOF_SCHEDULE_TWB , SOF_SCHEDULE_COUNT } |
Functions | |
| struct schedulers ** | arch_schedulers_get (void) |
| Retrieve the array of registered kernel-space schedulers for the current core. | |
| struct schedulers ** | arch_user_schedulers_get (void) |
| Retrieve registered schedulers for user-space threads on the current core. | |
| struct schedulers ** | arch_user_schedulers_get_for_core (int core) |
| Retrieve registered schedulers for user-space threads on a specific core. | |
| static void * | scheduler_list_get_data (struct schedulers *schedulers, uint16_t type) |
| Lookup scheduler private context data by scheduler type from a schedulers container. | |
| static void * | scheduler_get_data (uint16_t type) |
| Retrieve private data of a registered kernel scheduler on the current core. | |
| static void * | scheduler_get_user_data (uint16_t type) |
| Retrieve private data of a registered user-space scheduler on the current core. | |
| static int | schedule_task_running (struct task *task) |
| Notify the scheduler that a task is transitioning to the running state. | |
| static int | schedule_task (struct task *task, uint64_t start, uint64_t period) |
| Schedule a task for execution with start delay and period. | |
| static int | schedule_task_before (struct task *task, uint64_t start, uint64_t period, struct task *before) |
| Schedule a task to execute before a specified reference task. | |
| static int | schedule_task_after (struct task *task, uint64_t start, uint64_t period, struct task *after) |
| Schedule a task to execute after a specified reference task. | |
| static int | reschedule_task (struct task *task, uint64_t start) |
| Reschedule an already scheduled task with an updated start time. | |
| static int | schedule_task_cancel (struct task *task) |
| Cancel a scheduled or queued task. | |
| static int | schedule_task_free (struct task *task) |
| Free scheduler resources associated with a task. | |
| static struct k_thread * | scheduler_init_context (struct task *task) |
| Initialize thread execution context for a task. | |
| int | schedule_task_init (struct task *task, const struct sof_uuid_entry *uid, uint16_t type, int16_t priority, enum task_state(*run)(void *data), void *data, uint16_t core, uint32_t flags) |
| Initialize a scheduling task and bind it to the registered scheduler for its type and core. | |
| void | scheduler_init (int type, const struct scheduler_ops *ops, void *data) |
| Register a scheduler type instance with its operations table and private context data. | |
| void | scheduler_get_task_info (struct scheduler_props *scheduler_props, uint32_t *data_off_size, struct list_item *tasks) |
| Extract scheduler task telemetry and properties for IPC4 base firmware. | |
Generic scheduler interface, scheduler operations, and task management.