From f2ddb884f2300cd7709237975206e5b9d9b18445 Mon Sep 17 00:00:00 2001 From: Glenn Elliott Date: Mon, 29 Nov 2010 11:41:40 -0500 Subject: Add sched_trace data for Apative EDZL Added new trace event, st_task_completion_adaptive, to trace estimated execution time and estimation error when an AEDZL task completes. --- litmus/sched_aedzl.c | 1 + litmus/sched_task_trace.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) (limited to 'litmus') diff --git a/litmus/sched_aedzl.c b/litmus/sched_aedzl.c index 4943e1ed7616..99c1ad02bbb4 100644 --- a/litmus/sched_aedzl.c +++ b/litmus/sched_aedzl.c @@ -514,6 +514,7 @@ static noinline void job_completion(struct task_struct *t, int forced) BUG_ON(!t); sched_trace_task_completion(t, forced); + sched_trace_task_completion_adaptive(t); TRACE_TASK(t, "job_completion().\n"); diff --git a/litmus/sched_task_trace.c b/litmus/sched_task_trace.c index 39a543e22d41..4ae14ac63c2e 100644 --- a/litmus/sched_task_trace.c +++ b/litmus/sched_task_trace.c @@ -169,6 +169,26 @@ feather_callback void do_sched_trace_task_completion(unsigned long id, } } +feather_callback void do_sched_trace_task_completion_adaptive(unsigned long id, + unsigned long _task) +{ + struct task_struct *t = (struct task_struct*) _task; + struct st_event_record* rec = get_record(ST_COMPLETION_ADAPTIVE, t); + if (rec) { + s32 err; + rec->data.completion_adaptive.estimated_exe = get_exec_cost_est(t); + + err = _fp_to_integer(_mul(tsk_rt(t)->zl_accum_err, _frac(get_rt_period(t), 1))); + if((err < 0) && _point(tsk_rt(t)->zl_accum_err) < 0) + { + err *= -1; + } + rec->data.completion_adaptive.accumulated_err = err; + + put_record(rec); + } +} + feather_callback void do_sched_trace_task_block(unsigned long id, unsigned long _task) { -- cgit v1.2.2