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/trace | |
| 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/trace')
| -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; |
