ftrace: trace curr/next tasks
Ingo Molnar [Mon, 12 May 2008 19:20:52 +0000 (21:20 +0200)]
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

kernel/sched.c

index b9208a0..673b588 100644 (file)
@@ -2398,8 +2398,8 @@ static int sched_balance_self(int cpu, int flag)
 
 void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data)
 {
-       struct sched_entity *se;
        struct task_struct *p;
+       struct sched_entity *se;
        struct rb_node *curr;
        struct rq *rq = __rq;
 
@@ -2407,6 +2407,17 @@ void ftrace_all_fair_tasks(void *__rq, void *__tr, void *__data)
        if (!curr)
                return;
 
+       if (rq->cfs.curr) {
+               p = task_of(rq->cfs.curr);
+               __trace_special(__tr, __data,
+                     p->pid, p->se.vruntime, p->se.sum_exec_runtime);
+       }
+       if (rq->cfs.next) {
+               p = task_of(rq->cfs.next);
+               __trace_special(__tr, __data,
+                     p->pid, p->se.vruntime, p->se.sum_exec_runtime);
+       }
+
        while (curr) {
                se = rb_entry(curr, struct sched_entity, run_node);
                if (!entity_is_task(se))