Sound Open Firmware
Loading...
Searching...
No Matches
ll_schedule.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2016 Intel Corporation. All rights reserved.
4 *
5 * Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
6 */
7
17#ifndef __SOF_SCHEDULE_LL_SCHEDULE_H__
18#define __SOF_SCHEDULE_LL_SCHEDULE_H__
19
20#include <rtos/task.h>
21#include <sof/trace/trace.h>
22#include <user/trace.h>
23#include <stdint.h>
24#include <ipc4/base_fw.h>
25
31
32/* ll tracing */
33extern struct tr_ctx ll_tr;
34
40#define ll_sch_set_pdata(task, data) \
41 do { (task)->priv_data = (data); } while (0)
42
48#define ll_sch_get_pdata(task) ((task)->priv_data)
49
54 uint64_t period;
55 uint16_t ratio;
56 uint16_t skip_cnt;
57};
58
59#if !defined(__ZEPHYR__)
65int scheduler_init_ll(struct ll_schedule_domain *domain);
66
80 const struct sof_uuid_entry *uid, uint16_t type,
81 int16_t priority, enum task_state (*run)(void *data),
82 void *data, uint16_t core, uint32_t flags);
83#else
90
104 const struct sof_uuid_entry *uid, uint16_t type,
105 int16_t priority, enum task_state (*run)(void *data),
106 void *data, uint16_t core, uint32_t flags);
107
108#define scheduler_init_ll zephyr_ll_scheduler_init
109#define schedule_task_init_ll zephyr_ll_task_init
110
111#endif
112
122 uint32_t *data_off_size);
123
126#endif /* __SOF_SCHEDULE_LL_SCHEDULE_H__ */
IPC4 Base Firmware parameters, memory configuration, and status definitions.
int zephyr_ll_scheduler_init(struct ll_schedule_domain *domain)
Initialize the Zephyr Low-Latency scheduler domain.
struct tr_ctx ll_tr
void scheduler_get_task_info_ll(struct scheduler_props *scheduler_props, uint32_t *data_off_size)
Extract telemetry information about Low-Latency scheduler tasks.
task_state
Lifecycle and execution states of an SOF task.
Definition task.h:48
#define scheduler_init_ll
Definition ll_schedule.h:108
int zephyr_ll_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 Zephyr Low-Latency task.
#define schedule_task_init_ll
Definition ll_schedule.h:109
uint8_t data[0]
Binary byte payload for raw controls.
Definition header.h:5
uint32_t type
Message type, symmetric to the incoming request.
Definition header.h:8
User-space ABI log levels and binary trace packet header definitions.
Low-Latency scheduling domain instance descriptor.
Definition ll_schedule_domain.h:168
Low-Latency task private scheduling parameters.
Definition ll_schedule.h:53
uint16_t ratio
Ratio of periods compared to the base registrable task.
Definition ll_schedule.h:55
uint16_t skip_cnt
Counter tracking how many periods the task was skipped for rate alignment.
Definition ll_schedule.h:56
uint64_t period
Execution period in microseconds.
Definition ll_schedule.h:54
Core scheduler properties and scheduled tasks.
Definition base_fw.h:685
Connects UUID with component description.
Definition uuid.h:77
Core task structure managed by SOF schedulers.
Definition task.h:81
Definition trace.h:132
Core task descriptor, task operations, and task execution state machine.