aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2008-05-12 15:21:00 -0400
committerThomas Gleixner <tglx@linutronix.de>2008-05-23 15:52:12 -0400
commit25b0b44a1c732ccfc58095cdd8438955a0a19fff (patch)
tree68d2577cc12d6fc6cf14508cdf2ce8fbbf85032b /kernel/trace
parent4fcdae83cebda24b519a89d3dd976081fff1ca80 (diff)
ftrace: fix comm on function trace output
In cleaning up of the sched_switch code, the function trace recording of task comms was removed. This patch adds back the recording of comms for function trace. The output of ftrace now has the task comm instead of <...>. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/trace.c7
-rw-r--r--kernel/trace/trace.h2
-rw-r--r--kernel/trace/trace_functions.c2
-rw-r--r--kernel/trace/trace_sched_switch.c7
4 files changed, 15 insertions, 3 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index a102b11eacf2..1281969103b8 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -620,7 +620,12 @@ static unsigned map_cmdline_to_pid[SAVED_CMDLINES];
620static char saved_cmdlines[SAVED_CMDLINES][TASK_COMM_LEN]; 620static char saved_cmdlines[SAVED_CMDLINES][TASK_COMM_LEN];
621static int cmdline_idx; 621static int cmdline_idx;
622static DEFINE_SPINLOCK(trace_cmdline_lock); 622static DEFINE_SPINLOCK(trace_cmdline_lock);
623atomic_t trace_record_cmdline_disabled; 623
624/* trace in all context switches */
625atomic_t trace_record_cmdline_enabled __read_mostly;
626
627/* temporary disable recording */
628atomic_t trace_record_cmdline_disabled __read_mostly;
624 629
625static void trace_init_cmdlines(void) 630static void trace_init_cmdlines(void)
626{ 631{
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 21c29ee13e53..8991c5efcc74 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -216,6 +216,8 @@ extern unsigned long nsecs_to_usecs(unsigned long nsecs);
216extern unsigned long tracing_max_latency; 216extern unsigned long tracing_max_latency;
217extern unsigned long tracing_thresh; 217extern unsigned long tracing_thresh;
218 218
219extern atomic_t trace_record_cmdline_enabled;
220
219void update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu); 221void update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu);
220void update_max_tr_single(struct trace_array *tr, 222void update_max_tr_single(struct trace_array *tr,
221 struct task_struct *tsk, int cpu); 223 struct task_struct *tsk, int cpu);
diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c
index 4165d34bd28a..0a084656d7cf 100644
--- a/kernel/trace/trace_functions.c
+++ b/kernel/trace/trace_functions.c
@@ -29,12 +29,14 @@ static void function_reset(struct trace_array *tr)
29static void start_function_trace(struct trace_array *tr) 29static void start_function_trace(struct trace_array *tr)
30{ 30{
31 function_reset(tr); 31 function_reset(tr);
32 atomic_inc(&trace_record_cmdline_enabled);
32 tracing_start_function_trace(); 33 tracing_start_function_trace();
33} 34}
34 35
35static void stop_function_trace(struct trace_array *tr) 36static void stop_function_trace(struct trace_array *tr)
36{ 37{
37 tracing_stop_function_trace(); 38 tracing_stop_function_trace();
39 atomic_dec(&trace_record_cmdline_enabled);
38} 40}
39 41
40static void function_trace_init(struct trace_array *tr) 42static void function_trace_init(struct trace_array *tr)
diff --git a/kernel/trace/trace_sched_switch.c b/kernel/trace/trace_sched_switch.c
index 5671db0e1827..a3376478fc2c 100644
--- a/kernel/trace/trace_sched_switch.c
+++ b/kernel/trace/trace_sched_switch.c
@@ -29,8 +29,6 @@ ctx_switch_func(void *__rq, struct task_struct *prev, struct task_struct *next)
29 if (!tracer_enabled) 29 if (!tracer_enabled)
30 return; 30 return;
31 31
32 tracing_record_cmdline(prev);
33
34 local_irq_save(flags); 32 local_irq_save(flags);
35 cpu = raw_smp_processor_id(); 33 cpu = raw_smp_processor_id();
36 data = tr->data[cpu]; 34 data = tr->data[cpu];
@@ -73,6 +71,9 @@ void
73ftrace_ctx_switch(void *__rq, struct task_struct *prev, 71ftrace_ctx_switch(void *__rq, struct task_struct *prev,
74 struct task_struct *next) 72 struct task_struct *next)
75{ 73{
74 if (unlikely(atomic_read(&trace_record_cmdline_enabled)))
75 tracing_record_cmdline(prev);
76
76 /* 77 /*
77 * If tracer_switch_func only points to the local 78 * If tracer_switch_func only points to the local
78 * switch func, it still needs the ptr passed to it. 79 * switch func, it still needs the ptr passed to it.
@@ -134,11 +135,13 @@ static void sched_switch_reset(struct trace_array *tr)
134static void start_sched_trace(struct trace_array *tr) 135static void start_sched_trace(struct trace_array *tr)
135{ 136{
136 sched_switch_reset(tr); 137 sched_switch_reset(tr);
138 atomic_inc(&trace_record_cmdline_enabled);
137 tracer_enabled = 1; 139 tracer_enabled = 1;
138} 140}
139 141
140static void stop_sched_trace(struct trace_array *tr) 142static void stop_sched_trace(struct trace_array *tr)
141{ 143{
144 atomic_dec(&trace_record_cmdline_enabled);
142 tracer_enabled = 0; 145 tracer_enabled = 0;
143} 146}
144 147