aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2012-05-21 03:17:31 -0400
committerIngo Molnar <mingo@kernel.org>2012-05-21 03:17:50 -0400
commitbb27f55eb9405257a59c82550dbb0d684cc3a665 (patch)
treebdab5866709e6ac7eeef7493d7d73bbd3d6231b6 /kernel/trace
parentb732d439cb43336cd6d7e804ecb2c81193ef63b0 (diff)
parent5e1c81d98a5621007824b49dde556fead5ff9c6c (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.c8
-rw-r--r--kernel/trace/trace.h4
-rw-r--r--kernel/trace/trace_events.c5
-rw-r--r--kernel/trace/trace_export.c1
-rw-r--r--kernel/trace/trace_output.c5
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
4744rb_simple_read(struct file *filp, char __user *ubuf, 4744rb_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
4762rb_simple_write(struct file *filp, const char __user *ubuf, 4763rb_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)
842int perf_ftrace_event_register(struct ftrace_event_call *call, 842int 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}; \
184struct ftrace_event_call __used \ 185struct 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);