From: Yan Wang yan.wang@linux.intel.com
It will use SCH trace class and global DMA trace API.
Signed-off-by: Yan Wang yan.wang@linux.intel.com --- Test with: CNL nocodec SOF master: c1f2682c210201bbbc96fce7b382b25b90d19775 SOF-Tool master: 86fe688a2b4f68a1ce87e0951686be12a00f1a3c https://github.com/plbossart/sound/tree/topic/sof-v4.14: d09db67c5a9d6dfc85f700669fa2e43c678c8d51 --- src/include/sof/schedule.h | 10 ++++++++++ src/lib/schedule.c | 20 ++++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/src/include/sof/schedule.h b/src/include/sof/schedule.h index 7e5b3b2..b4b4b31 100644 --- a/src/include/sof/schedule.h +++ b/src/include/sof/schedule.h @@ -55,6 +55,16 @@ struct sof; #define TASK_PRI_MED 0 #define TASK_PRI_HIGH -20
+#define trace_sch(__e) \ + trace_global_event(NORMAL_LEVEL, TRACE_CLASS_SCH, __e) +#define tracev_sch(__e) \ + trace_global_event(VERBOSE_LEVEL, TRACE_CLASS_SCH, __e) +#define trace_sch_error(__e) \ + trace_global_event(ERROR_LEVEL, TRACE_CLASS_SCH, __e) +#define trace_sch_value(x) \ + trace_global_value(NORMAL_LEVEL, x) +#define trace_sch_error_value(x) \ + trace_global_value(ERROR_LEVEL, x)
/* task descriptor */ struct task { diff --git a/src/lib/schedule.c b/src/lib/schedule.c index b98934d..6ed7c32 100644 --- a/src/lib/schedule.c +++ b/src/lib/schedule.c @@ -138,7 +138,7 @@ static inline struct task *edf_get_next(uint64_t current,
} else { /* missed scheduling - will be rescheduled */ - trace_pipe("ed!"); + trace_sch("ed!");
/* have we already tried to rescheule ? */ if (reschedule++) @@ -158,7 +158,7 @@ static inline struct task *edf_get_next(uint64_t current, /* work set in the future when next task can be scheduled */ static uint64_t sch_work(void *data, uint64_t delay) { - tracev_pipe("wrk"); + tracev_sch("wrk"); schedule(); return 0; } @@ -175,7 +175,7 @@ static struct task *schedule_edf(void) struct task *future_task = NULL; uint64_t current;
- tracev_pipe("edf"); + tracev_sch("edf");
/* get the current time */ current = platform_timer_get(platform_timer); @@ -211,7 +211,7 @@ static int schedule_task_del(struct task *task) uint32_t flags; int ret = 0;
- tracev_pipe("del"); + tracev_sch("del");
/* add task to list */ spin_lock_irq(&sch->lock, flags); @@ -237,13 +237,13 @@ static int _schedule_task(struct task *task, uint64_t start, uint64_t deadline) uint32_t flags; uint64_t current;
- tracev_pipe("ad!"); + tracev_sch("ad!");
spin_lock_irq(&sch->lock, flags);
/* is task already running ? - not enough MIPS to complete ? */ if (task->state == TASK_STATE_RUNNING) { - trace_pipe("tsk"); + trace_sch("tsk"); spin_unlock_irq(&sch->lock, flags); return 0; } @@ -307,7 +307,7 @@ void schedule_task_complete(struct task *task) { uint32_t flags;
- tracev_pipe("com"); + tracev_sch("com");
spin_lock_irq(&sch->lock, flags); list_item_del(&task->list); @@ -319,7 +319,7 @@ static void scheduler_run(void *unused) { struct task *future_task;
- tracev_pipe("run"); + tracev_sch("run");
/* EDF is only scheduler supported atm */ future_task = schedule_edf(); @@ -334,7 +334,7 @@ void schedule(void) struct task *task; uint32_t flags;
- tracev_pipe("sch"); + tracev_sch("sch");
spin_lock_irq(&sch->lock, flags);
@@ -367,7 +367,7 @@ schedule: /* Initialise the scheduler */ int scheduler_init(struct sof *sof) { - trace_pipe("ScI"); + trace_sch("ScI");
sch = rzalloc(RZONE_SYS, SOF_MEM_CAPS_RAM, sizeof(*sch)); list_init(&sch->list);