]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - kernel/trace/trace_sched_switch.c
ftrace: remove add-hoc code
[mv-sheeva.git] / kernel / trace / trace_sched_switch.c
index 5a217e863586e3ba2bfcc609892fa6ba0786c41d..5671db0e1827e99b7828cf84f36569a8a8dd4b26 100644 (file)
@@ -36,11 +36,8 @@ ctx_switch_func(void *__rq, struct task_struct *prev, struct task_struct *next)
        data = tr->data[cpu];
        disabled = atomic_inc_return(&data->disabled);
 
-       if (likely(disabled == 1)) {
+       if (likely(disabled == 1))
                tracing_sched_switch_trace(tr, data, prev, next, flags);
-               if (trace_flags & TRACE_ITER_SCHED_TREE)
-                       ftrace_all_fair_tasks(__rq, tr, data);
-       }
 
        atomic_dec(&data->disabled);
        local_irq_restore(flags);
@@ -65,11 +62,8 @@ wakeup_func(void *__rq, struct task_struct *wakee, struct task_struct *curr)
        data = tr->data[cpu];
        disabled = atomic_inc_return(&data->disabled);
 
-       if (likely(disabled == 1)) {
+       if (likely(disabled == 1))
                tracing_sched_wakeup_trace(tr, data, wakee, curr, flags);
-               if (trace_flags & TRACE_ITER_SCHED_TREE)
-                       ftrace_all_fair_tasks(__rq, tr, data);
-       }
 
        atomic_dec(&data->disabled);
        local_irq_restore(flags);
@@ -103,6 +97,30 @@ ftrace_wake_up_task(void *__rq, struct task_struct *wakee,
        wakeup_sched_wakeup(wakee, curr);
 }
 
+void
+ftrace_special(unsigned long arg1, unsigned long arg2, unsigned long arg3)
+{
+       struct trace_array *tr = ctx_trace;
+       struct trace_array_cpu *data;
+       unsigned long flags;
+       long disabled;
+       int cpu;
+
+       if (!tracer_enabled)
+               return;
+
+       local_irq_save(flags);
+       cpu = raw_smp_processor_id();
+       data = tr->data[cpu];
+       disabled = atomic_inc_return(&data->disabled);
+
+       if (likely(disabled == 1))
+               __trace_special(tr, data, arg1, arg2, arg3);
+
+       atomic_dec(&data->disabled);
+       local_irq_restore(flags);
+}
+
 static void sched_switch_reset(struct trace_array *tr)
 {
        int cpu;