diff options
author | Steven Rostedt <rostedt@goodmis.org> | 2008-05-22 00:22:18 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-05-26 16:51:09 -0400 |
commit | 4902f8849da6d2805bd291551a6dfd48f1b4f604 (patch) | |
tree | ec19e62448c1d839c502cfc03cf8c60c2da17c6f /kernel/trace/trace.c | |
parent | 19384c0314342222b18d4c7f09cdce1ca74dfd2a (diff) |
ftrace: move ftrace_special to trace.c
Move the ftrace_special out of sched_switch to trace.c.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Cc: pq@iki.fi
Cc: proski@gnu.org
Cc: sandmann@redhat.com
Cc: a.p.zijlstra@chello.nl
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r-- | kernel/trace/trace.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 0567f51bbea4..583fe24903d3 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -941,6 +941,30 @@ tracing_sched_wakeup_trace(struct trace_array *tr, | |||
941 | trace_wake_up(); | 941 | trace_wake_up(); |
942 | } | 942 | } |
943 | 943 | ||
944 | void | ||
945 | ftrace_special(unsigned long arg1, unsigned long arg2, unsigned long arg3) | ||
946 | { | ||
947 | struct trace_array *tr = &global_trace; | ||
948 | struct trace_array_cpu *data; | ||
949 | unsigned long flags; | ||
950 | long disabled; | ||
951 | int cpu; | ||
952 | |||
953 | if (tracing_disabled || current_trace == &no_tracer || !tr->ctrl) | ||
954 | return; | ||
955 | |||
956 | local_irq_save(flags); | ||
957 | cpu = raw_smp_processor_id(); | ||
958 | data = tr->data[cpu]; | ||
959 | disabled = atomic_inc_return(&data->disabled); | ||
960 | |||
961 | if (likely(disabled == 1)) | ||
962 | __trace_special(tr, data, arg1, arg2, arg3); | ||
963 | |||
964 | atomic_dec(&data->disabled); | ||
965 | local_irq_restore(flags); | ||
966 | } | ||
967 | |||
944 | #ifdef CONFIG_FTRACE | 968 | #ifdef CONFIG_FTRACE |
945 | static void | 969 | static void |
946 | function_trace_call(unsigned long ip, unsigned long parent_ip) | 970 | function_trace_call(unsigned long ip, unsigned long parent_ip) |
@@ -2941,8 +2965,6 @@ __init static int tracer_alloc_buffers(void) | |||
2941 | int ret = -ENOMEM; | 2965 | int ret = -ENOMEM; |
2942 | int i; | 2966 | int i; |
2943 | 2967 | ||
2944 | global_trace.ctrl = tracer_enabled; | ||
2945 | |||
2946 | /* TODO: make the number of buffers hot pluggable with CPUS */ | 2968 | /* TODO: make the number of buffers hot pluggable with CPUS */ |
2947 | tracing_nr_buffers = num_possible_cpus(); | 2969 | tracing_nr_buffers = num_possible_cpus(); |
2948 | tracing_buffer_mask = cpu_possible_map; | 2970 | tracing_buffer_mask = cpu_possible_map; |
@@ -3012,6 +3034,7 @@ __init static int tracer_alloc_buffers(void) | |||
3012 | current_trace = &no_tracer; | 3034 | current_trace = &no_tracer; |
3013 | 3035 | ||
3014 | /* All seems OK, enable tracing */ | 3036 | /* All seems OK, enable tracing */ |
3037 | global_trace.ctrl = tracer_enabled; | ||
3015 | tracing_disabled = 0; | 3038 | tracing_disabled = 0; |
3016 | 3039 | ||
3017 | return 0; | 3040 | return 0; |