Sound Open Firmware
Loading...
Searching...
No Matches
schedule.h File Reference

Generic scheduler interface, scheduler operations, and task management. More...

Include dependency graph for schedule.h:
This graph shows which files directly or indirectly include this file:

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.
 

Detailed Description

Generic scheduler interface, scheduler operations, and task management.