diff options
author | Ingo Molnar <mingo@kernel.org> | 2012-04-25 06:33:24 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-04-25 06:33:24 -0400 |
commit | c716ef56f1319e8a515cb1947a3ec59b06e94a5e (patch) | |
tree | 4434fc69dfbc9e8f4ddb1844cb460c45fbacf53a /kernel | |
parent | b64909af1c1a441b31e8ffe812557a37103dd2d8 (diff) | |
parent | db4c75cbebd7e5910cd3bcb6790272fcc3042857 (diff) |
Merge branch 'tip/perf/urgent-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/urgent
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/trace/trace.c | 8 | ||||
-rw-r--r-- | kernel/trace/trace.h | 4 | ||||
-rw-r--r-- | kernel/trace/trace_output.c | 5 |
3 files changed, 12 insertions, 5 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index ed7b5d1e12f4..2a22255c1010 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -4629,7 +4629,8 @@ static ssize_t | |||
4629 | rb_simple_read(struct file *filp, char __user *ubuf, | 4629 | rb_simple_read(struct file *filp, char __user *ubuf, |
4630 | size_t cnt, loff_t *ppos) | 4630 | size_t cnt, loff_t *ppos) |
4631 | { | 4631 | { |
4632 | struct ring_buffer *buffer = filp->private_data; | 4632 | struct trace_array *tr = filp->private_data; |
4633 | struct ring_buffer *buffer = tr->buffer; | ||
4633 | char buf[64]; | 4634 | char buf[64]; |
4634 | int r; | 4635 | int r; |
4635 | 4636 | ||
@@ -4647,7 +4648,8 @@ static ssize_t | |||
4647 | rb_simple_write(struct file *filp, const char __user *ubuf, | 4648 | rb_simple_write(struct file *filp, const char __user *ubuf, |
4648 | size_t cnt, loff_t *ppos) | 4649 | size_t cnt, loff_t *ppos) |
4649 | { | 4650 | { |
4650 | struct ring_buffer *buffer = filp->private_data; | 4651 | struct trace_array *tr = filp->private_data; |
4652 | struct ring_buffer *buffer = tr->buffer; | ||
4651 | unsigned long val; | 4653 | unsigned long val; |
4652 | int ret; | 4654 | int ret; |
4653 | 4655 | ||
@@ -4734,7 +4736,7 @@ static __init int tracer_init_debugfs(void) | |||
4734 | &trace_clock_fops); | 4736 | &trace_clock_fops); |
4735 | 4737 | ||
4736 | trace_create_file("tracing_on", 0644, d_tracer, | 4738 | trace_create_file("tracing_on", 0644, d_tracer, |
4737 | global_trace.buffer, &rb_simple_fops); | 4739 | &global_trace, &rb_simple_fops); |
4738 | 4740 | ||
4739 | #ifdef CONFIG_DYNAMIC_FTRACE | 4741 | #ifdef CONFIG_DYNAMIC_FTRACE |
4740 | trace_create_file("dyn_ftrace_total_info", 0444, d_tracer, | 4742 | trace_create_file("dyn_ftrace_total_info", 0444, d_tracer, |
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 95059f091a24..f95d65da6db8 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -836,11 +836,11 @@ extern const char *__stop___trace_bprintk_fmt[]; | |||
836 | filter) | 836 | filter) |
837 | #include "trace_entries.h" | 837 | #include "trace_entries.h" |
838 | 838 | ||
839 | #ifdef CONFIG_FUNCTION_TRACER | 839 | #if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_FUNCTION_TRACER) |
840 | int perf_ftrace_event_register(struct ftrace_event_call *call, | 840 | int perf_ftrace_event_register(struct ftrace_event_call *call, |
841 | enum trace_reg type, void *data); | 841 | enum trace_reg type, void *data); |
842 | #else | 842 | #else |
843 | #define perf_ftrace_event_register NULL | 843 | #define perf_ftrace_event_register NULL |
844 | #endif /* CONFIG_FUNCTION_TRACER */ | 844 | #endif |
845 | 845 | ||
846 | #endif /* _LINUX_KERNEL_TRACE_H */ | 846 | #endif /* _LINUX_KERNEL_TRACE_H */ |
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 859fae6b1825..df611a0e76c5 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c | |||
@@ -652,6 +652,8 @@ int trace_print_lat_context(struct trace_iterator *iter) | |||
652 | { | 652 | { |
653 | u64 next_ts; | 653 | u64 next_ts; |
654 | int ret; | 654 | int ret; |
655 | /* trace_find_next_entry will reset ent_size */ | ||
656 | int ent_size = iter->ent_size; | ||
655 | struct trace_seq *s = &iter->seq; | 657 | struct trace_seq *s = &iter->seq; |
656 | struct trace_entry *entry = iter->ent, | 658 | struct trace_entry *entry = iter->ent, |
657 | *next_entry = trace_find_next_entry(iter, NULL, | 659 | *next_entry = trace_find_next_entry(iter, NULL, |
@@ -660,6 +662,9 @@ int trace_print_lat_context(struct trace_iterator *iter) | |||
660 | unsigned long abs_usecs = ns2usecs(iter->ts - iter->tr->time_start); | 662 | unsigned long abs_usecs = ns2usecs(iter->ts - iter->tr->time_start); |
661 | unsigned long rel_usecs; | 663 | unsigned long rel_usecs; |
662 | 664 | ||
665 | /* Restore the original ent_size */ | ||
666 | iter->ent_size = ent_size; | ||
667 | |||
663 | if (!next_entry) | 668 | if (!next_entry) |
664 | next_ts = iter->ts; | 669 | next_ts = iter->ts; |
665 | rel_usecs = ns2usecs(next_ts - iter->ts); | 670 | rel_usecs = ns2usecs(next_ts - iter->ts); |