aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>2014-03-21 08:23:38 -0400
committerSteven Rostedt <rostedt@goodmis.org>2014-03-21 13:11:41 -0400
commitbc4c426ee2431d1f717004d3bbaacbd819b544fd (patch)
treef3b13ad5bf6b0977263bc690e44996e2ef22f0fe /kernel/trace
parentd88471cb8b17a72b1edf5ab62e1704d78373c066 (diff)
Revert "tracing: Move event storage for array from macro to standalone function"
I originally wrote commit 35bb4399bd0e to shrink the size of the overhead of tracepoints by several kilobytes. Later, I received a patch from Vaibhav Nagarnaik that fixed a bug in the same code that this commit touches. Not only did it fix a bug, it also removed code and shrunk the size of the overhead of trace events even more than this commit did. Since this commit is scheduled for 3.15 and Vaibhav's patch is already in mainline, I need to revert this patch in order to keep it from conflicting with Vaibhav's patch. Not to mention, Vaibhav's patch makes this patch obsolete. Link: http://lkml.kernel.org/r/20140320225637.0226041b@gandalf.local.home Cc: Vaibhav Nagarnaik <vnagarnaik@google.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/trace_events.c6
-rw-r--r--kernel/trace/trace_export.c12
-rw-r--r--kernel/trace/trace_output.c21
3 files changed, 14 insertions, 25 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index b8f73b333a3c..2f7b8e31e3a4 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -27,6 +27,12 @@
27 27
28DEFINE_MUTEX(event_mutex); 28DEFINE_MUTEX(event_mutex);
29 29
30DEFINE_MUTEX(event_storage_mutex);
31EXPORT_SYMBOL_GPL(event_storage_mutex);
32
33char event_storage[EVENT_STORAGE_SIZE];
34EXPORT_SYMBOL_GPL(event_storage);
35
30LIST_HEAD(ftrace_events); 36LIST_HEAD(ftrace_events);
31static LIST_HEAD(ftrace_common_fields); 37static LIST_HEAD(ftrace_common_fields);
32 38
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
index 39c746c5ae73..7c3e3e72e2b6 100644
--- a/kernel/trace/trace_export.c
+++ b/kernel/trace/trace_export.c
@@ -96,10 +96,14 @@ static void __always_unused ____ftrace_check_##name(void) \
96#define __array(type, item, len) \ 96#define __array(type, item, len) \
97 do { \ 97 do { \
98 BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ 98 BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \
99 ret = ftrace_event_define_field(event_call, #type, len, \ 99 mutex_lock(&event_storage_mutex); \
100 #item, offsetof(typeof(field), item), \ 100 snprintf(event_storage, sizeof(event_storage), \
101 sizeof(field.item), \ 101 "%s[%d]", #type, len); \
102 is_signed_type(type), filter_type); \ 102 ret = trace_define_field(event_call, event_storage, #item, \
103 offsetof(typeof(field), item), \
104 sizeof(field.item), \
105 is_signed_type(type), filter_type); \
106 mutex_unlock(&event_storage_mutex); \
103 if (ret) \ 107 if (ret) \
104 return ret; \ 108 return ret; \
105 } while (0); 109 } while (0);
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index ee8d74840b88..ca0e79e2abaa 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -20,10 +20,6 @@ static struct hlist_head event_hash[EVENT_HASHSIZE] __read_mostly;
20 20
21static int next_event_type = __TRACE_LAST_TYPE + 1; 21static int next_event_type = __TRACE_LAST_TYPE + 1;
22 22
23#define EVENT_STORAGE_SIZE 128
24static DEFINE_MUTEX(event_storage_mutex);
25static char event_storage[EVENT_STORAGE_SIZE];
26
27int trace_print_seq(struct seq_file *m, struct trace_seq *s) 23int trace_print_seq(struct seq_file *m, struct trace_seq *s)
28{ 24{
29 int len = s->len >= PAGE_SIZE ? PAGE_SIZE - 1 : s->len; 25 int len = s->len >= PAGE_SIZE ? PAGE_SIZE - 1 : s->len;
@@ -474,23 +470,6 @@ int ftrace_output_call(struct trace_iterator *iter, char *name, char *fmt, ...)
474} 470}
475EXPORT_SYMBOL_GPL(ftrace_output_call); 471EXPORT_SYMBOL_GPL(ftrace_output_call);
476 472
477int ftrace_event_define_field(struct ftrace_event_call *call,
478 char *type, int len, char *item, int offset,
479 int field_size, int sign, int filter)
480{
481 int ret;
482
483 mutex_lock(&event_storage_mutex);
484 snprintf(event_storage, sizeof(event_storage),
485 "%s[%d]", type, len);
486 ret = trace_define_field(call, event_storage, item, offset,
487 field_size, sign, filter);
488 mutex_unlock(&event_storage_mutex);
489
490 return ret;
491}
492EXPORT_SYMBOL_GPL(ftrace_event_define_field);
493
494#ifdef CONFIG_KRETPROBES 473#ifdef CONFIG_KRETPROBES
495static inline const char *kretprobed(const char *name) 474static inline const char *kretprobed(const char *name)
496{ 475{