diff options
| author | Frederic Weisbecker <fweisbec@gmail.com> | 2008-10-31 12:57:20 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-11-04 17:14:02 +0100 | 
| commit | 71566a0d161edec70361b7f90f6e54af6a6d5d05 (patch) | |
| tree | 78d2d790ed4e20c179d2f61f2ed50ecbb6d5a451 /kernel | |
| parent | 7a895f53cda9d9362c30144e42c124a1ae996b9e (diff) | |
tracing/fastboot: Enable boot tracing only during initcalls
Impact: modify boot tracer
We used to disable the initcall tracing at a specified time (IE: end
of builtin initcalls). But we don't need it anymore. It will be
stopped when initcalls are finished.
However we want two things:
_Start this tracing only after pre-smp initcalls are finished.
_Since we are planning to trace sched_switches at the same time, we
want to enable them only during the initcall execution.
For this purpose, this patch introduce two functions to enable/disable
the sched_switch tracing during boot.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/trace/trace_boot.c | 28 | 
1 files changed, 16 insertions, 12 deletions
| diff --git a/kernel/trace/trace_boot.c b/kernel/trace/trace_boot.c index d0a5e50eeff2..d104d5b46413 100644 --- a/kernel/trace/trace_boot.c +++ b/kernel/trace/trace_boot.c @@ -13,23 +13,29 @@  #include "trace.h"  static struct trace_array *boot_trace; -static int trace_boot_enabled; +static bool pre_initcalls_finished; - -/* Should be started after do_pre_smp_initcalls() in init/main.c */ +/* Tells the boot tracer that the pre_smp_initcalls are finished. + * So we are ready . + * It doesn't enable sched events tracing however. + * You have to call enable_boot_trace to do so. + */  void start_boot_trace(void)  { -	trace_boot_enabled = 1; +	pre_initcalls_finished = true; +} + +void enable_boot_trace(void) +{  } -void stop_boot_trace(void) +void disable_boot_trace(void)  { -	trace_boot_enabled = 0;  }  void reset_boot_trace(struct trace_array *tr)  { -	stop_boot_trace(); +	disable_boot_trace();  }  static void boot_trace_init(struct trace_array *tr) @@ -37,8 +43,6 @@ static void boot_trace_init(struct trace_array *tr)  	int cpu;  	boot_trace = tr; -	trace_boot_enabled = 0; -  	for_each_cpu_mask(cpu, cpu_possible_map)  		tracing_reset(tr, cpu);  } @@ -46,9 +50,9 @@ static void boot_trace_init(struct trace_array *tr)  static void boot_trace_ctrl_update(struct trace_array *tr)  {  	if (tr->ctrl) -		start_boot_trace(); +		enable_boot_trace();  	else -		stop_boot_trace(); +		disable_boot_trace();  }  static enum print_line_t initcall_print_line(struct trace_iterator *iter) @@ -99,7 +103,7 @@ void trace_boot(struct boot_trace *it, initcall_t fn)  	unsigned long irq_flags;  	struct trace_array *tr = boot_trace; -	if (!trace_boot_enabled) +	if (!pre_initcalls_finished)  		return;  	/* Get its name now since this function could | 
