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

Data Processing (DP) preemptible worker thread scheduler. More...

Include dependency graph for dp_schedule.h:

Go to the source code of this file.

Data Structures

union  scheduler_dp_thread_ipc_param
 

Enumerations

enum  { DP_TASK_EVENT_PROCESS = BIT(0) , DP_TASK_EVENT_CANCEL = BIT(1) , DP_TASK_EVENT_IPC = BIT(2) , DP_TASK_EVENT_IPC_DONE = BIT(3) }
 Events signaled to Data Processing (DP) worker threads. More...
 

Functions

int scheduler_dp_init (void)
 Initialize the Data Processing (DP) scheduler on the calling core.
 
int scheduler_dp_task_init (struct task **task, const struct sof_uuid_entry *uid, const struct task_ops *ops, struct processing_module *mod, uint16_t core, size_t stack_size, uint32_t options)
 Initialize a Data Processing task and attach a dedicated Zephyr worker thread.
 
void scheduler_dp_internal_free (struct task *task)
 Free kernel-side internal resources associated with a DP task.
 
void scheduler_dp_ll_tick (void)
 Tick notification from the Low-Latency (LL) timer domain to the DP scheduler.
 
void scheduler_get_task_info_dp (struct scheduler_props *scheduler_props, uint32_t *data_off_size)
 Extract telemetry information about Data Processing scheduler tasks.
 
static int scheduler_dp_thread_ipc (struct processing_module *pmod, unsigned int cmd, union scheduler_dp_thread_ipc_param *param)
 Dispatch an IPC command synchronously to a Data Processing (DP) worker thread.
 

Detailed Description

Data Processing (DP) preemptible worker thread scheduler.

The Data Processing (DP) scheduler manages compute-intensive audio processing tasks by assigning a dedicated preemptible Zephyr thread to each SOF task.

Key Architectural Properties

  • Preemptible Execution: Each DP task executes in its own Zephyr thread at a priority lower than the hard real-time Low-Latency (LL) scheduler thread.
  • LL-Synchronized Evaluation: At the end of each Low-Latency tick, scheduler_dp_ll_tick() evaluates all queued DP tasks. If a task's sources contain enough audio data and its sinks have sufficient buffer space, its deadline is calculated and applied to the Zephyr thread via k_thread_absolute_deadline_set().
  • Task States & Return Values: