diff options
author | Ingo Molnar <mingo@kernel.org> | 2012-05-21 03:17:31 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-05-21 03:17:50 -0400 |
commit | bb27f55eb9405257a59c82550dbb0d684cc3a665 (patch) | |
tree | bdab5866709e6ac7eeef7493d7d73bbd3d6231b6 /kernel/trace | |
parent | b732d439cb43336cd6d7e804ecb2c81193ef63b0 (diff) | |
parent | 5e1c81d98a5621007824b49dde556fead5ff9c6c (diff) |
Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Fixes for perf/core:
- Rename some perf_target methods to avoid double negation, from Namhyung Kim.
- Revert change to use per task events with inheritance, from Namhyung Kim.
- Events should start disabled till children starts running, from David Ahern.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/trace')
-rw-r--r-- | kernel/trace/trace.c | 8 | ||||
-rw-r--r-- | kernel/trace/trace.h | 4 | ||||
-rw-r--r-- | kernel/trace/trace_events.c | 5 | ||||
-rw-r--r-- | kernel/trace/trace_export.c | 1 | ||||
-rw-r--r-- | kernel/trace/trace_output.c | 5 |
5 files changed, 17 insertions, 6 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 08a08bab57a3..33ae2f196fa3 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -4744,7 +4744,8 @@ static ssize_t | |||
4744 | rb_simple_read(struct file *filp, char __user *ubuf, | 4744 | rb_simple_read(struct file *filp, char __user *ubuf, |
4745 | size_t cnt, loff_t *ppos) | 4745 | size_t cnt, loff_t *ppos) |
4746 | { | 4746 | { |
4747 | struct ring_buffer *buffer = filp->private_data; | 4747 | struct trace_array *tr = filp->private_data; |
4748 | struct ring_buffer *buffer = tr->buffer; | ||
4748 | char buf[64]; | 4749 | char buf[64]; |
4749 | int r; | 4750 | int r; |
4750 | 4751 | ||
@@ -4762,7 +4763,8 @@ static ssize_t | |||
4762 | rb_simple_write(struct file *filp, const char __user *ubuf, | 4763 | rb_simple_write(struct file *filp, const char __user *ubuf, |
4763 | size_t cnt, loff_t *ppos) | 4764 | size_t cnt, loff_t *ppos) |
4764 | { | 4765 | { |
4765 | struct ring_buffer *buffer = filp->private_data; | 4766 | struct trace_array *tr = filp->private_data; |
4767 | struct ring_buffer *buffer = tr->buffer; | ||
4766 | unsigned long val; | 4768 | unsigned long val; |
4767 | int ret; | 4769 | int ret; |
4768 | 4770 | ||
@@ -4849,7 +4851,7 @@ static __init int tracer_init_debugfs(void) | |||
4849 | &trace_clock_fops); | 4851 | &trace_clock_fops); |
4850 | 4852 | ||
4851 | trace_create_file("tracing_on", 0644, d_tracer, | 4853 | trace_create_file("tracing_on", 0644, d_tracer, |
4852 | global_trace.buffer, &rb_simple_fops); | 4854 | &global_trace, &rb_simple_fops); |
4853 | 4855 | ||
4854 | #ifdef CONFIG_DYNAMIC_FTRACE | 4856 | #ifdef CONFIG_DYNAMIC_FTRACE |
4855 | trace_create_file("dyn_ftrace_total_info", 0444, d_tracer, | 4857 | trace_create_file("dyn_ftrace_total_info", 0444, d_tracer, |
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 1c8b7c6f7b3b..6c6f7933eede 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -838,11 +838,11 @@ void trace_printk_init_buffers(void); | |||
838 | filter) | 838 | filter) |
839 | #include "trace_entries.h" | 839 | #include "trace_entries.h" |
840 | 840 | ||
841 | #ifdef CONFIG_FUNCTION_TRACER | 841 | #if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_FUNCTION_TRACER) |
842 | int perf_ftrace_event_register(struct ftrace_event_call *call, | 842 | int perf_ftrace_event_register(struct ftrace_event_call *call, |
843 | enum trace_reg type, void *data); | 843 | enum trace_reg type, void *data); |
844 | #else | 844 | #else |
845 | #define perf_ftrace_event_register NULL | 845 | #define perf_ftrace_event_register NULL |
846 | #endif /* CONFIG_FUNCTION_TRACER */ | 846 | #endif |
847 | 847 | ||
848 | #endif /* _LINUX_KERNEL_TRACE_H */ | 848 | #endif /* _LINUX_KERNEL_TRACE_H */ |
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 079a93ae8a9d..29111da1d100 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
@@ -294,6 +294,9 @@ static int __ftrace_set_clr_event(const char *match, const char *sub, | |||
294 | if (!call->name || !call->class || !call->class->reg) | 294 | if (!call->name || !call->class || !call->class->reg) |
295 | continue; | 295 | continue; |
296 | 296 | ||
297 | if (call->flags & TRACE_EVENT_FL_IGNORE_ENABLE) | ||
298 | continue; | ||
299 | |||
297 | if (match && | 300 | if (match && |
298 | strcmp(match, call->name) != 0 && | 301 | strcmp(match, call->name) != 0 && |
299 | strcmp(match, call->class->system) != 0) | 302 | strcmp(match, call->class->system) != 0) |
@@ -1164,7 +1167,7 @@ event_create_dir(struct ftrace_event_call *call, struct dentry *d_events, | |||
1164 | return -1; | 1167 | return -1; |
1165 | } | 1168 | } |
1166 | 1169 | ||
1167 | if (call->class->reg) | 1170 | if (call->class->reg && !(call->flags & TRACE_EVENT_FL_IGNORE_ENABLE)) |
1168 | trace_create_file("enable", 0644, call->dir, call, | 1171 | trace_create_file("enable", 0644, call->dir, call, |
1169 | enable); | 1172 | enable); |
1170 | 1173 | ||
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c index 3dd15e8bc856..e039906b037d 100644 --- a/kernel/trace/trace_export.c +++ b/kernel/trace/trace_export.c | |||
@@ -180,6 +180,7 @@ struct ftrace_event_call __used event_##call = { \ | |||
180 | .event.type = etype, \ | 180 | .event.type = etype, \ |
181 | .class = &event_class_ftrace_##call, \ | 181 | .class = &event_class_ftrace_##call, \ |
182 | .print_fmt = print, \ | 182 | .print_fmt = print, \ |
183 | .flags = TRACE_EVENT_FL_IGNORE_ENABLE, \ | ||
183 | }; \ | 184 | }; \ |
184 | struct ftrace_event_call __used \ | 185 | struct ftrace_event_call __used \ |
185 | __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call; | 186 | __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call; |
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); |