aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/trace_events.c20
-rw-r--r--kernel/trace/trace_events_filter.c6
-rw-r--r--kernel/trace/trace_export.c6
-rw-r--r--kernel/trace/trace_kprobe.c12
-rw-r--r--kernel/trace/trace_syscalls.c4
5 files changed, 28 insertions, 20 deletions
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index c697c7043349..2f54b48d3632 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -176,10 +176,10 @@ static int __ftrace_set_clr_event(const char *match, const char *sub,
176 176
177 if (match && 177 if (match &&
178 strcmp(match, call->name) != 0 && 178 strcmp(match, call->name) != 0 &&
179 strcmp(match, call->system) != 0) 179 strcmp(match, call->class->system) != 0)
180 continue; 180 continue;
181 181
182 if (sub && strcmp(sub, call->system) != 0) 182 if (sub && strcmp(sub, call->class->system) != 0)
183 continue; 183 continue;
184 184
185 if (event && strcmp(event, call->name) != 0) 185 if (event && strcmp(event, call->name) != 0)
@@ -355,8 +355,8 @@ static int t_show(struct seq_file *m, void *v)
355{ 355{
356 struct ftrace_event_call *call = v; 356 struct ftrace_event_call *call = v;
357 357
358 if (strcmp(call->system, TRACE_SYSTEM) != 0) 358 if (strcmp(call->class->system, TRACE_SYSTEM) != 0)
359 seq_printf(m, "%s:", call->system); 359 seq_printf(m, "%s:", call->class->system);
360 seq_printf(m, "%s\n", call->name); 360 seq_printf(m, "%s\n", call->name);
361 361
362 return 0; 362 return 0;
@@ -453,7 +453,7 @@ system_enable_read(struct file *filp, char __user *ubuf, size_t cnt,
453 if (!call->name || !call->regfunc) 453 if (!call->name || !call->regfunc)
454 continue; 454 continue;
455 455
456 if (system && strcmp(call->system, system) != 0) 456 if (system && strcmp(call->class->system, system) != 0)
457 continue; 457 continue;
458 458
459 /* 459 /*
@@ -925,8 +925,8 @@ event_create_dir(struct ftrace_event_call *call, struct dentry *d_events,
925 * If the trace point header did not define TRACE_SYSTEM 925 * If the trace point header did not define TRACE_SYSTEM
926 * then the system would be called "TRACE_SYSTEM". 926 * then the system would be called "TRACE_SYSTEM".
927 */ 927 */
928 if (strcmp(call->system, TRACE_SYSTEM) != 0) 928 if (strcmp(call->class->system, TRACE_SYSTEM) != 0)
929 d_events = event_subsystem_dir(call->system, d_events); 929 d_events = event_subsystem_dir(call->class->system, d_events);
930 930
931 call->dir = debugfs_create_dir(call->name, d_events); 931 call->dir = debugfs_create_dir(call->name, d_events);
932 if (!call->dir) { 932 if (!call->dir) {
@@ -1041,7 +1041,7 @@ static void __trace_remove_event_call(struct ftrace_event_call *call)
1041 list_del(&call->list); 1041 list_del(&call->list);
1042 trace_destroy_fields(call); 1042 trace_destroy_fields(call);
1043 destroy_preds(call); 1043 destroy_preds(call);
1044 remove_subsystem_dir(call->system); 1044 remove_subsystem_dir(call->class->system);
1045} 1045}
1046 1046
1047/* Remove an event_call */ 1047/* Remove an event_call */
@@ -1399,8 +1399,8 @@ static __init void event_trace_self_tests(void)
1399 * syscalls as we test. 1399 * syscalls as we test.
1400 */ 1400 */
1401#ifndef CONFIG_EVENT_TRACE_TEST_SYSCALLS 1401#ifndef CONFIG_EVENT_TRACE_TEST_SYSCALLS
1402 if (call->system && 1402 if (call->class->system &&
1403 strcmp(call->system, "syscalls") == 0) 1403 strcmp(call->class->system, "syscalls") == 0)
1404 continue; 1404 continue;
1405#endif 1405#endif
1406 1406
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 88c0b6dbd7fe..ca329603d0bf 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -628,7 +628,7 @@ static int init_subsystem_preds(struct event_subsystem *system)
628 if (!call->define_fields) 628 if (!call->define_fields)
629 continue; 629 continue;
630 630
631 if (strcmp(call->system, system->name) != 0) 631 if (strcmp(call->class->system, system->name) != 0)
632 continue; 632 continue;
633 633
634 err = init_preds(call); 634 err = init_preds(call);
@@ -647,7 +647,7 @@ static void filter_free_subsystem_preds(struct event_subsystem *system)
647 if (!call->define_fields) 647 if (!call->define_fields)
648 continue; 648 continue;
649 649
650 if (strcmp(call->system, system->name) != 0) 650 if (strcmp(call->class->system, system->name) != 0)
651 continue; 651 continue;
652 652
653 filter_disable_preds(call); 653 filter_disable_preds(call);
@@ -1252,7 +1252,7 @@ static int replace_system_preds(struct event_subsystem *system,
1252 if (!call->define_fields) 1252 if (!call->define_fields)
1253 continue; 1253 continue;
1254 1254
1255 if (strcmp(call->system, system->name) != 0) 1255 if (strcmp(call->class->system, system->name) != 0)
1256 continue; 1256 continue;
1257 1257
1258 /* try to see if the filter can be applied */ 1258 /* try to see if the filter can be applied */
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
index e091f64ba6ce..7f16e2163817 100644
--- a/kernel/trace/trace_export.c
+++ b/kernel/trace/trace_export.c
@@ -18,6 +18,10 @@
18#undef TRACE_SYSTEM 18#undef TRACE_SYSTEM
19#define TRACE_SYSTEM ftrace 19#define TRACE_SYSTEM ftrace
20 20
21struct ftrace_event_class event_class_ftrace = {
22 .system = __stringify(TRACE_SYSTEM),
23};
24
21/* not needed for this file */ 25/* not needed for this file */
22#undef __field_struct 26#undef __field_struct
23#define __field_struct(type, item) 27#define __field_struct(type, item)
@@ -160,7 +164,7 @@ __attribute__((__aligned__(4))) \
160__attribute__((section("_ftrace_events"))) event_##call = { \ 164__attribute__((section("_ftrace_events"))) event_##call = { \
161 .name = #call, \ 165 .name = #call, \
162 .id = type, \ 166 .id = type, \
163 .system = __stringify(TRACE_SYSTEM), \ 167 .class = &event_class_ftrace, \
164 .raw_init = ftrace_raw_init_event, \ 168 .raw_init = ftrace_raw_init_event, \
165 .print_fmt = print, \ 169 .print_fmt = print, \
166 .define_fields = ftrace_define_fields_##call, \ 170 .define_fields = ftrace_define_fields_##call, \
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 1251e367bae9..eda220bf2065 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -332,8 +332,8 @@ static struct trace_probe *alloc_trace_probe(const char *group,
332 goto error; 332 goto error;
333 } 333 }
334 334
335 tp->call.system = kstrdup(group, GFP_KERNEL); 335 tp->call.class->system = kstrdup(group, GFP_KERNEL);
336 if (!tp->call.system) 336 if (!tp->call.class->system)
337 goto error; 337 goto error;
338 338
339 INIT_LIST_HEAD(&tp->list); 339 INIT_LIST_HEAD(&tp->list);
@@ -361,7 +361,7 @@ static void free_trace_probe(struct trace_probe *tp)
361 for (i = 0; i < tp->nr_args; i++) 361 for (i = 0; i < tp->nr_args; i++)
362 free_probe_arg(&tp->args[i]); 362 free_probe_arg(&tp->args[i]);
363 363
364 kfree(tp->call.system); 364 kfree(tp->call.class->system);
365 kfree(tp->call.name); 365 kfree(tp->call.name);
366 kfree(tp->symbol); 366 kfree(tp->symbol);
367 kfree(tp); 367 kfree(tp);
@@ -374,7 +374,7 @@ static struct trace_probe *find_probe_event(const char *event,
374 374
375 list_for_each_entry(tp, &probe_list, list) 375 list_for_each_entry(tp, &probe_list, list)
376 if (strcmp(tp->call.name, event) == 0 && 376 if (strcmp(tp->call.name, event) == 0 &&
377 strcmp(tp->call.system, group) == 0) 377 strcmp(tp->call.class->system, group) == 0)
378 return tp; 378 return tp;
379 return NULL; 379 return NULL;
380} 380}
@@ -399,7 +399,7 @@ static int register_trace_probe(struct trace_probe *tp)
399 mutex_lock(&probe_lock); 399 mutex_lock(&probe_lock);
400 400
401 /* register as an event */ 401 /* register as an event */
402 old_tp = find_probe_event(tp->call.name, tp->call.system); 402 old_tp = find_probe_event(tp->call.name, tp->call.class->system);
403 if (old_tp) { 403 if (old_tp) {
404 /* delete old event */ 404 /* delete old event */
405 unregister_trace_probe(old_tp); 405 unregister_trace_probe(old_tp);
@@ -798,7 +798,7 @@ static int probes_seq_show(struct seq_file *m, void *v)
798 char buf[MAX_ARGSTR_LEN + 1]; 798 char buf[MAX_ARGSTR_LEN + 1];
799 799
800 seq_printf(m, "%c", probe_is_return(tp) ? 'r' : 'p'); 800 seq_printf(m, "%c", probe_is_return(tp) ? 'r' : 'p');
801 seq_printf(m, ":%s/%s", tp->call.system, tp->call.name); 801 seq_printf(m, ":%s/%s", tp->call.class->system, tp->call.name);
802 802
803 if (!tp->symbol) 803 if (!tp->symbol)
804 seq_printf(m, " 0x%p", tp->rp.kp.addr); 804 seq_printf(m, " 0x%p", tp->rp.kp.addr);
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
index 4d6d711717f2..d036a74a64f3 100644
--- a/kernel/trace/trace_syscalls.c
+++ b/kernel/trace/trace_syscalls.c
@@ -15,6 +15,10 @@ static int sys_refcount_exit;
15static DECLARE_BITMAP(enabled_enter_syscalls, NR_syscalls); 15static DECLARE_BITMAP(enabled_enter_syscalls, NR_syscalls);
16static DECLARE_BITMAP(enabled_exit_syscalls, NR_syscalls); 16static DECLARE_BITMAP(enabled_exit_syscalls, NR_syscalls);
17 17
18struct ftrace_event_class event_class_syscalls = {
19 .system = "syscalls"
20};
21
18extern unsigned long __start_syscalls_metadata[]; 22extern unsigned long __start_syscalls_metadata[];
19extern unsigned long __stop_syscalls_metadata[]; 23extern unsigned long __stop_syscalls_metadata[];
20 24