ftrace: trace scheduler rbtree
authorIngo Molnar <mingo@elte.hu>
Mon, 12 May 2008 19:20:52 +0000 (21:20 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 23 May 2008 19:07:31 +0000 (21:07 +0200)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/trace/trace.c
kernel/trace/trace.h
kernel/trace/trace_sched_switch.c

index 65d2c0a..06380dc 100644 (file)
@@ -129,6 +129,7 @@ static const char *trace_options[] = {
        "bin",
        "block",
        "stacktrace",
+       "sched-tree",
        NULL
 };
 
index 75e2374..a520157 100644 (file)
@@ -286,6 +286,7 @@ enum trace_iterator_flags {
        TRACE_ITER_BIN                  = 0x40,
        TRACE_ITER_BLOCK                = 0x80,
        TRACE_ITER_STACKTRACE           = 0x100,
+       TRACE_ITER_SCHED_TREE           = 0x200,
 };
 
 #endif /* _LINUX_KERNEL_TRACE_H */
index 12658b3..5555b90 100644 (file)
@@ -36,7 +36,8 @@ ctx_switch_func(void *__rq, struct task_struct *prev, struct task_struct *next)
 
        if (likely(disabled == 1)) {
                tracing_sched_switch_trace(tr, data, prev, next, flags);
-               ftrace_all_fair_tasks(__rq, tr, data);
+               if (trace_flags & TRACE_ITER_SCHED_TREE)
+                       ftrace_all_fair_tasks(__rq, tr, data);
        }
 
        atomic_dec(&data->disabled);
@@ -62,7 +63,8 @@ wakeup_func(void *__rq, struct task_struct *wakee, struct task_struct *curr)
 
        if (likely(disabled == 1)) {
                tracing_sched_wakeup_trace(tr, data, wakee, curr, flags);
-               ftrace_all_fair_tasks(__rq, tr, data);
+               if (trace_flags & TRACE_ITER_SCHED_TREE)
+                       ftrace_all_fair_tasks(__rq, tr, data);
        }
 
        atomic_dec(&data->disabled);