aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.c
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-09-02 12:27:41 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-09-04 11:48:12 -0400
commit8248ac052dfd1eb41819fbc0ca5c7a1667e7e70c (patch)
treed979964a23112b6266d26da19a572057e5060367 /kernel/trace/trace.c
parent077c5407cd3231cf13472623995f0dfdda510d62 (diff)
tracing: print out start and stop in latency traces
During development of the tracer, we would copy information from the live tracer to the max tracer with one memcpy. Since then we added a generic ring buffer and we handle the copies differently now. Unfortunately, we never copied the critical section information, and we lost the output: # => started at: kmem_cache_alloc # => ended at: kmem_cache_alloc This patch adds back the critical start and end copying as well as removes the unused "trace_idx" and "overrun" fields of the trace_array_cpu structure. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r--kernel/trace/trace.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 0f0881676dc9..df2c9f730ac6 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -407,19 +407,22 @@ static void
407__update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu) 407__update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu)
408{ 408{
409 struct trace_array_cpu *data = tr->data[cpu]; 409 struct trace_array_cpu *data = tr->data[cpu];
410 struct trace_array_cpu *max_data = tr->data[cpu];
410 411
411 max_tr.cpu = cpu; 412 max_tr.cpu = cpu;
412 max_tr.time_start = data->preempt_timestamp; 413 max_tr.time_start = data->preempt_timestamp;
413 414
414 data = max_tr.data[cpu]; 415 max_data = max_tr.data[cpu];
415 data->saved_latency = tracing_max_latency; 416 max_data->saved_latency = tracing_max_latency;
417 max_data->critical_start = data->critical_start;
418 max_data->critical_end = data->critical_end;
416 419
417 memcpy(data->comm, tsk->comm, TASK_COMM_LEN); 420 memcpy(data->comm, tsk->comm, TASK_COMM_LEN);
418 data->pid = tsk->pid; 421 max_data->pid = tsk->pid;
419 data->uid = task_uid(tsk); 422 max_data->uid = task_uid(tsk);
420 data->nice = tsk->static_prio - 20 - MAX_RT_PRIO; 423 max_data->nice = tsk->static_prio - 20 - MAX_RT_PRIO;
421 data->policy = tsk->policy; 424 max_data->policy = tsk->policy;
422 data->rt_priority = tsk->rt_priority; 425 max_data->rt_priority = tsk->rt_priority;
423 426
424 /* record this tasks comm */ 427 /* record this tasks comm */
425 tracing_record_cmdline(tsk); 428 tracing_record_cmdline(tsk);
@@ -1501,7 +1504,7 @@ print_trace_header(struct seq_file *m, struct trace_iterator *iter)
1501 seq_puts(m, "\n# => ended at: "); 1504 seq_puts(m, "\n# => ended at: ");
1502 seq_print_ip_sym(&iter->seq, data->critical_end, sym_flags); 1505 seq_print_ip_sym(&iter->seq, data->critical_end, sym_flags);
1503 trace_print_seq(m, &iter->seq); 1506 trace_print_seq(m, &iter->seq);
1504 seq_puts(m, "#\n"); 1507 seq_puts(m, "\n#\n");
1505 } 1508 }
1506 1509
1507 seq_puts(m, "#\n"); 1510 seq_puts(m, "#\n");