diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2009-12-07 22:14:36 -0500 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2009-12-13 12:34:23 -0500 |
commit | 614a71a26ba3d97e9fa85649db69a682b78e407d (patch) | |
tree | f0e52c9fa62f4e4230bc2ead2449caae3b30ff87 /kernel | |
parent | 87d9b4e1c52867a45331a9a5495f6448e0c68b23 (diff) |
tracing: Pull up calls to trace_define_common_fields()
Call trace_define_common_fields() in event_create_dir() only.
This avoids trace events to handle it from their define_fields
callbacks and shrinks the kernel code size:
text data bss dec hex filename
5346802 1961864 7103260 14411926 dbe896 vmlinux.o.old
5345151 1961864 7103260 14410275 dbe223 vmlinux.o
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Jason Baron <jbaron@redhat.com>
Cc: Masami Hiramatsu <mhiramat@redhat.com>
LKML-Reference: <4B1DC49C.8000107@cn.fujitsu.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/trace/trace_events.c | 7 | ||||
-rw-r--r-- | kernel/trace/trace_export.c | 4 | ||||
-rw-r--r-- | kernel/trace/trace_kprobe.c | 8 | ||||
-rw-r--r-- | kernel/trace/trace_syscalls.c | 8 |
4 files changed, 4 insertions, 23 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 8ed66e0d476b..97b0b3aa166d 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c | |||
@@ -78,7 +78,7 @@ EXPORT_SYMBOL_GPL(trace_define_field); | |||
78 | if (ret) \ | 78 | if (ret) \ |
79 | return ret; | 79 | return ret; |
80 | 80 | ||
81 | int trace_define_common_fields(struct ftrace_event_call *call) | 81 | static int trace_define_common_fields(struct ftrace_event_call *call) |
82 | { | 82 | { |
83 | int ret; | 83 | int ret; |
84 | struct trace_entry ent; | 84 | struct trace_entry ent; |
@@ -91,7 +91,6 @@ int trace_define_common_fields(struct ftrace_event_call *call) | |||
91 | 91 | ||
92 | return ret; | 92 | return ret; |
93 | } | 93 | } |
94 | EXPORT_SYMBOL_GPL(trace_define_common_fields); | ||
95 | 94 | ||
96 | void trace_destroy_fields(struct ftrace_event_call *call) | 95 | void trace_destroy_fields(struct ftrace_event_call *call) |
97 | { | 96 | { |
@@ -927,7 +926,9 @@ event_create_dir(struct ftrace_event_call *call, struct dentry *d_events, | |||
927 | id); | 926 | id); |
928 | 927 | ||
929 | if (call->define_fields) { | 928 | if (call->define_fields) { |
930 | ret = call->define_fields(call); | 929 | ret = trace_define_common_fields(call); |
930 | if (!ret) | ||
931 | ret = call->define_fields(call); | ||
931 | if (ret < 0) { | 932 | if (ret < 0) { |
932 | pr_warning("Could not initialize trace point" | 933 | pr_warning("Could not initialize trace point" |
933 | " events/%s\n", call->name); | 934 | " events/%s\n", call->name); |
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c index dff8c84ddf17..458e5bfe26d0 100644 --- a/kernel/trace/trace_export.c +++ b/kernel/trace/trace_export.c | |||
@@ -184,10 +184,6 @@ ftrace_define_fields_##name(struct ftrace_event_call *event_call) \ | |||
184 | struct struct_name field; \ | 184 | struct struct_name field; \ |
185 | int ret; \ | 185 | int ret; \ |
186 | \ | 186 | \ |
187 | ret = trace_define_common_fields(event_call); \ | ||
188 | if (ret) \ | ||
189 | return ret; \ | ||
190 | \ | ||
191 | tstruct; \ | 187 | tstruct; \ |
192 | \ | 188 | \ |
193 | return ret; \ | 189 | return ret; \ |
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index aff5f80b59b8..e3c80e925896 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c | |||
@@ -1113,10 +1113,6 @@ static int kprobe_event_define_fields(struct ftrace_event_call *event_call) | |||
1113 | struct kprobe_trace_entry field; | 1113 | struct kprobe_trace_entry field; |
1114 | struct trace_probe *tp = (struct trace_probe *)event_call->data; | 1114 | struct trace_probe *tp = (struct trace_probe *)event_call->data; |
1115 | 1115 | ||
1116 | ret = trace_define_common_fields(event_call); | ||
1117 | if (!ret) | ||
1118 | return ret; | ||
1119 | |||
1120 | DEFINE_FIELD(unsigned long, ip, FIELD_STRING_IP, 0); | 1116 | DEFINE_FIELD(unsigned long, ip, FIELD_STRING_IP, 0); |
1121 | DEFINE_FIELD(int, nargs, FIELD_STRING_NARGS, 1); | 1117 | DEFINE_FIELD(int, nargs, FIELD_STRING_NARGS, 1); |
1122 | /* Set argument names as fields */ | 1118 | /* Set argument names as fields */ |
@@ -1131,10 +1127,6 @@ static int kretprobe_event_define_fields(struct ftrace_event_call *event_call) | |||
1131 | struct kretprobe_trace_entry field; | 1127 | struct kretprobe_trace_entry field; |
1132 | struct trace_probe *tp = (struct trace_probe *)event_call->data; | 1128 | struct trace_probe *tp = (struct trace_probe *)event_call->data; |
1133 | 1129 | ||
1134 | ret = trace_define_common_fields(event_call); | ||
1135 | if (!ret) | ||
1136 | return ret; | ||
1137 | |||
1138 | DEFINE_FIELD(unsigned long, func, FIELD_STRING_FUNC, 0); | 1130 | DEFINE_FIELD(unsigned long, func, FIELD_STRING_FUNC, 0); |
1139 | DEFINE_FIELD(unsigned long, ret_ip, FIELD_STRING_RETIP, 0); | 1131 | DEFINE_FIELD(unsigned long, ret_ip, FIELD_STRING_RETIP, 0); |
1140 | DEFINE_FIELD(int, nargs, FIELD_STRING_NARGS, 1); | 1132 | DEFINE_FIELD(int, nargs, FIELD_STRING_NARGS, 1); |
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index 57501d90096a..b957edd0ca3b 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
@@ -217,10 +217,6 @@ int syscall_enter_define_fields(struct ftrace_event_call *call) | |||
217 | int i; | 217 | int i; |
218 | int offset = offsetof(typeof(trace), args); | 218 | int offset = offsetof(typeof(trace), args); |
219 | 219 | ||
220 | ret = trace_define_common_fields(call); | ||
221 | if (ret) | ||
222 | return ret; | ||
223 | |||
224 | ret = trace_define_field(call, SYSCALL_FIELD(int, nr), FILTER_OTHER); | 220 | ret = trace_define_field(call, SYSCALL_FIELD(int, nr), FILTER_OTHER); |
225 | if (ret) | 221 | if (ret) |
226 | return ret; | 222 | return ret; |
@@ -241,10 +237,6 @@ int syscall_exit_define_fields(struct ftrace_event_call *call) | |||
241 | struct syscall_trace_exit trace; | 237 | struct syscall_trace_exit trace; |
242 | int ret; | 238 | int ret; |
243 | 239 | ||
244 | ret = trace_define_common_fields(call); | ||
245 | if (ret) | ||
246 | return ret; | ||
247 | |||
248 | ret = trace_define_field(call, SYSCALL_FIELD(int, nr), FILTER_OTHER); | 240 | ret = trace_define_field(call, SYSCALL_FIELD(int, nr), FILTER_OTHER); |
249 | if (ret) | 241 | if (ret) |
250 | return ret; | 242 | return ret; |