diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-02-02 21:38:33 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-03 00:26:12 -0500 |
commit | 79fb0768fbd371f3b94d909f51f587b3a24ab272 (patch) | |
tree | f8a891fcfae6eb9eeef10e9f8b343b813371789c /kernel/trace/trace_boot.c | |
parent | b2821ae68b14480bfc85ea1629537163310bc5cd (diff) |
trace: let boot trace be chosen by command line
Now that we have a working ftrace=<tracer> function, make the boot
tracer get activated by it. This way we can turn it on or off without
recompiling the kernel, as well as keeping the selftests on. The
selftests are disabled whenever a default tracer starts running.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace_boot.c')
-rw-r--r-- | kernel/trace/trace_boot.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/trace/trace_boot.c b/kernel/trace/trace_boot.c index 0e94b3d091f7..1f07895977a0 100644 --- a/kernel/trace/trace_boot.c +++ b/kernel/trace/trace_boot.c | |||
@@ -28,13 +28,13 @@ void start_boot_trace(void) | |||
28 | 28 | ||
29 | void enable_boot_trace(void) | 29 | void enable_boot_trace(void) |
30 | { | 30 | { |
31 | if (pre_initcalls_finished) | 31 | if (boot_trace && pre_initcalls_finished) |
32 | tracing_start_sched_switch_record(); | 32 | tracing_start_sched_switch_record(); |
33 | } | 33 | } |
34 | 34 | ||
35 | void disable_boot_trace(void) | 35 | void disable_boot_trace(void) |
36 | { | 36 | { |
37 | if (pre_initcalls_finished) | 37 | if (boot_trace && pre_initcalls_finished) |
38 | tracing_stop_sched_switch_record(); | 38 | tracing_stop_sched_switch_record(); |
39 | } | 39 | } |
40 | 40 | ||
@@ -43,6 +43,9 @@ static int boot_trace_init(struct trace_array *tr) | |||
43 | int cpu; | 43 | int cpu; |
44 | boot_trace = tr; | 44 | boot_trace = tr; |
45 | 45 | ||
46 | if (!tr) | ||
47 | return 0; | ||
48 | |||
46 | for_each_cpu(cpu, cpu_possible_mask) | 49 | for_each_cpu(cpu, cpu_possible_mask) |
47 | tracing_reset(tr, cpu); | 50 | tracing_reset(tr, cpu); |
48 | 51 | ||
@@ -132,7 +135,7 @@ void trace_boot_call(struct boot_trace_call *bt, initcall_t fn) | |||
132 | unsigned long irq_flags; | 135 | unsigned long irq_flags; |
133 | struct trace_array *tr = boot_trace; | 136 | struct trace_array *tr = boot_trace; |
134 | 137 | ||
135 | if (!pre_initcalls_finished) | 138 | if (!tr || !pre_initcalls_finished) |
136 | return; | 139 | return; |
137 | 140 | ||
138 | /* Get its name now since this function could | 141 | /* Get its name now since this function could |
@@ -164,7 +167,7 @@ void trace_boot_ret(struct boot_trace_ret *bt, initcall_t fn) | |||
164 | unsigned long irq_flags; | 167 | unsigned long irq_flags; |
165 | struct trace_array *tr = boot_trace; | 168 | struct trace_array *tr = boot_trace; |
166 | 169 | ||
167 | if (!pre_initcalls_finished) | 170 | if (!tr || !pre_initcalls_finished) |
168 | return; | 171 | return; |
169 | 172 | ||
170 | sprint_symbol(bt->func, (unsigned long)fn); | 173 | sprint_symbol(bt->func, (unsigned long)fn); |