aboutsummaryrefslogtreecommitdiff
path: root/include/trace
diff options
context:
space:
mode:
authorSteven Rostedt2012-08-09 22:26:46 -0400
committerSteven Rostedt2014-03-07 10:06:06 -0500
commit35bb4399bd0ef16b8a57fccea0047d98b6b0e7fb (patch)
tree16b340bd7b6d1e17e9d78d7d3ea88141cf2e3905 /include/trace
parent1d6bae966e90134bcfd7807b8f9488d55198de91 (diff)
tracing: Move event storage for array from macro to standalone function
The code that shows array fields for events is defined for all events. This can add up quite a bit when you have over 500 events. By making helper functions in the core kernel to do the work instead, we can shrink the size of the kernel down a bit. With a kernel configured with 502 events, the change in size was: text data bss dec hex filename 12990946 1913568 9785344 24689858 178bcc2 /tmp/vmlinux 12987390 1913504 9785344 24686238 178ae9e /tmp/vmlinux.patched That's a total of 3556 bytes, which comes down to 7 bytes per event. Although it's not much, this code is just called at initialization of the events. Link: http://lkml.kernel.org/r/20120810034708.084036335@goodmis.org Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'include/trace')
-rw-r--r--include/trace/ftrace.h12
1 files changed, 4 insertions, 8 deletions
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index 3873d6e4697f..54928faf2119 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -302,15 +302,11 @@ static struct trace_event_functions ftrace_event_type_funcs_##call = { \
#undef __array
#define __array(type, item, len) \
do { \
- mutex_lock(&event_storage_mutex); \
BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \
- snprintf(event_storage, sizeof(event_storage), \
- "%s[%d]", #type, len); \
- ret = trace_define_field(event_call, event_storage, #item, \
- offsetof(typeof(field), item), \
- sizeof(field.item), \
- is_signed_type(type), FILTER_OTHER); \
- mutex_unlock(&event_storage_mutex); \
+ ret = ftrace_event_define_field(event_call, #type, len, \
+ #item, offsetof(typeof(field), item), \
+ sizeof(field.item), \
+ is_signed_type(type), FILTER_OTHER); \
if (ret) \
return ret; \
} while (0);