Lines Matching refs:tr

72 #define do_for_each_event_file(tr, file)			\  argument
73 list_for_each_entry(tr, &ftrace_trace_arrays, list) { \
74 list_for_each_entry(file, &tr->events, list)
76 #define do_for_each_event_file_safe(tr, file) \ argument
77 list_for_each_entry(tr, &ftrace_trace_arrays, list) { \
79 list_for_each_entry_safe(file, ___n, &tr->events, list)
624 struct trace_array *tr = trace_file->tr; in trace_event_ignore_this_pid() local
629 pid_list = rcu_dereference_raw(tr->filtered_pids); in trace_event_ignore_this_pid()
630 no_pid_list = rcu_dereference_raw(tr->filtered_no_pids); in trace_event_ignore_this_pid()
635 data = this_cpu_ptr(tr->array_buffer.data); in trace_event_ignore_this_pid()
714 struct trace_array *tr; in trace_event_enable_cmd_record() local
718 do_for_each_event_file(tr, file) { in trace_event_enable_cmd_record()
736 struct trace_array *tr; in trace_event_enable_tgid_record() local
740 do_for_each_event_file(tr, file) { in trace_event_enable_tgid_record()
759 struct trace_array *tr = file->tr; in __ftrace_event_enable_disable() local
836 if (tr->trace_flags & TRACE_ITER_RECORD_CMD) { in __ftrace_event_enable_disable()
842 if (tr->trace_flags & TRACE_ITER_RECORD_TGID) { in __ftrace_event_enable_disable()
900 static void clear_mod_events(struct trace_array *tr) in clear_mod_events() argument
904 list_for_each_entry_safe(event_mod, n, &tr->mod_events, list) { in clear_mod_events()
909 static int remove_cache_mod(struct trace_array *tr, const char *mod, in remove_cache_mod() argument
915 list_for_each_entry_safe(event_mod, n, &tr->mod_events, list) { in remove_cache_mod()
937 static int cache_mod(struct trace_array *tr, const char *mod, int set, in cache_mod() argument
948 return remove_cache_mod(tr, mod, match, system, event); in cache_mod()
977 list_add(&event_mod->list, &tr->mod_events); in cache_mod()
987 static inline void clear_mod_events(struct trace_array *tr) { } in clear_mod_events() argument
988 static int cache_mod(struct trace_array *tr, const char *mod, int set, in cache_mod() argument
995 static void ftrace_clear_events(struct trace_array *tr) in ftrace_clear_events() argument
1000 list_for_each_entry(file, &tr->events, list) { in ftrace_clear_events()
1003 clear_mod_events(tr); in ftrace_clear_events()
1011 struct trace_array *tr = data; in event_filter_pid_sched_process_exit() local
1013 pid_list = rcu_dereference_raw(tr->filtered_pids); in event_filter_pid_sched_process_exit()
1016 pid_list = rcu_dereference_raw(tr->filtered_no_pids); in event_filter_pid_sched_process_exit()
1026 struct trace_array *tr = data; in event_filter_pid_sched_process_fork() local
1028 pid_list = rcu_dereference_sched(tr->filtered_pids); in event_filter_pid_sched_process_fork()
1031 pid_list = rcu_dereference_sched(tr->filtered_no_pids); in event_filter_pid_sched_process_fork()
1035 void trace_event_follow_fork(struct trace_array *tr, bool enable) in trace_event_follow_fork() argument
1039 tr, INT_MIN); in trace_event_follow_fork()
1041 tr, INT_MAX); in trace_event_follow_fork()
1044 tr); in trace_event_follow_fork()
1046 tr); in trace_event_follow_fork()
1056 struct trace_array *tr = data; in event_filter_pid_sched_switch_probe_pre() local
1061 pid_list = rcu_dereference_sched(tr->filtered_pids); in event_filter_pid_sched_switch_probe_pre()
1062 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids); in event_filter_pid_sched_switch_probe_pre()
1071 this_cpu_write(tr->array_buffer.data->ignore_pid, ret || in event_filter_pid_sched_switch_probe_pre()
1082 struct trace_array *tr = data; in event_filter_pid_sched_switch_probe_post() local
1086 pid_list = rcu_dereference_sched(tr->filtered_pids); in event_filter_pid_sched_switch_probe_post()
1087 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids); in event_filter_pid_sched_switch_probe_post()
1089 this_cpu_write(tr->array_buffer.data->ignore_pid, in event_filter_pid_sched_switch_probe_post()
1096 struct trace_array *tr = data; in event_filter_pid_sched_wakeup_probe_pre() local
1101 if (!this_cpu_read(tr->array_buffer.data->ignore_pid)) in event_filter_pid_sched_wakeup_probe_pre()
1104 pid_list = rcu_dereference_sched(tr->filtered_pids); in event_filter_pid_sched_wakeup_probe_pre()
1105 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids); in event_filter_pid_sched_wakeup_probe_pre()
1107 this_cpu_write(tr->array_buffer.data->ignore_pid, in event_filter_pid_sched_wakeup_probe_pre()
1114 struct trace_array *tr = data; in event_filter_pid_sched_wakeup_probe_post() local
1119 if (this_cpu_read(tr->array_buffer.data->ignore_pid)) in event_filter_pid_sched_wakeup_probe_post()
1122 pid_list = rcu_dereference_sched(tr->filtered_pids); in event_filter_pid_sched_wakeup_probe_post()
1123 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids); in event_filter_pid_sched_wakeup_probe_post()
1126 this_cpu_write(tr->array_buffer.data->ignore_pid, in event_filter_pid_sched_wakeup_probe_post()
1130 static void unregister_pid_events(struct trace_array *tr) in unregister_pid_events() argument
1132 unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_pre, tr); in unregister_pid_events()
1133 unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_post, tr); in unregister_pid_events()
1135 unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_pre, tr); in unregister_pid_events()
1136 unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_post, tr); in unregister_pid_events()
1138 unregister_trace_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_pre, tr); in unregister_pid_events()
1139 unregister_trace_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_post, tr); in unregister_pid_events()
1141 unregister_trace_sched_waking(event_filter_pid_sched_wakeup_probe_pre, tr); in unregister_pid_events()
1142 unregister_trace_sched_waking(event_filter_pid_sched_wakeup_probe_post, tr); in unregister_pid_events()
1145 static void __ftrace_clear_event_pids(struct trace_array *tr, int type) in __ftrace_clear_event_pids() argument
1152 pid_list = rcu_dereference_protected(tr->filtered_pids, in __ftrace_clear_event_pids()
1154 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids, in __ftrace_clear_event_pids()
1162 unregister_pid_events(tr); in __ftrace_clear_event_pids()
1164 list_for_each_entry(file, &tr->events, list) { in __ftrace_clear_event_pids()
1169 per_cpu_ptr(tr->array_buffer.data, cpu)->ignore_pid = false; in __ftrace_clear_event_pids()
1173 rcu_assign_pointer(tr->filtered_pids, NULL); in __ftrace_clear_event_pids()
1176 rcu_assign_pointer(tr->filtered_no_pids, NULL); in __ftrace_clear_event_pids()
1188 static void ftrace_clear_event_pids(struct trace_array *tr, int type) in ftrace_clear_event_pids() argument
1191 __ftrace_clear_event_pids(tr, type); in ftrace_clear_event_pids()
1291 __ftrace_set_clr_event_nolock(struct trace_array *tr, const char *match, in __ftrace_set_clr_event_nolock() argument
1314 list_for_each_entry(file, &tr->events, list) { in __ftrace_set_clr_event_nolock()
1359 ret = cache_mod(tr, module, set, match, sub, event); in __ftrace_set_clr_event_nolock()
1364 static int __ftrace_set_clr_event(struct trace_array *tr, const char *match, in __ftrace_set_clr_event() argument
1371 ret = __ftrace_set_clr_event_nolock(tr, match, sub, event, set, mod); in __ftrace_set_clr_event()
1377 int ftrace_set_clr_event(struct trace_array *tr, char *buf, int set) in ftrace_set_clr_event() argument
1382 if (!tr) in ftrace_set_clr_event()
1421 ret = __ftrace_set_clr_event(tr, match, sub, event, set, mod); in ftrace_set_clr_event()
1444 struct trace_array *tr = top_trace_array(); in trace_set_clr_event() local
1446 if (!tr) in trace_set_clr_event()
1449 return __ftrace_set_clr_event(tr, NULL, system, event, set, NULL); in trace_set_clr_event()
1466 int trace_array_set_clr_event(struct trace_array *tr, const char *system, in trace_array_set_clr_event() argument
1471 if (!tr) in trace_array_set_clr_event()
1475 return __ftrace_set_clr_event(tr, NULL, system, event, set, NULL); in trace_array_set_clr_event()
1488 struct trace_array *tr = m->private; in ftrace_event_write() local
1494 ret = tracing_update_buffers(tr); in ftrace_event_write()
1509 ret = ftrace_set_clr_event(tr, parser.buffer + !set, set); in ftrace_event_write()
1527 struct trace_array *tr = m->private; in t_next() local
1531 list_for_each_entry_continue(file, &tr->events, list) { in t_next()
1548 struct trace_array *tr = m->private; in t_start() local
1553 file = list_entry(&tr->events, struct trace_event_file, list); in t_start()
1580 struct trace_array *tr = m->private; in s_next() local
1586 list_for_each_entry_continue(file, &tr->events, list) { in s_next()
1594 iter->event_mod = list_entry(&tr->mod_events, struct event_mod_load, list); in s_next()
1599 list_for_each_entry_continue(iter->event_mod, &tr->mod_events, list) in s_next()
1615 struct trace_array *tr = m->private; in s_start() local
1626 iter->file = list_entry(&tr->events, struct trace_event_file, list); in s_start()
1695 struct trace_array *tr = m->private; in __next() local
1699 pid_list = rcu_dereference_sched(tr->filtered_pids); in __next()
1701 pid_list = rcu_dereference_sched(tr->filtered_no_pids); in __next()
1722 struct trace_array *tr = m->private; in __start() local
1734 pid_list = rcu_dereference_sched(tr->filtered_pids); in __start()
1736 pid_list = rcu_dereference_sched(tr->filtered_no_pids); in __start()
1813 ret = tracing_update_buffers(file->tr); in event_enable_write()
1837 int trace_events_enabled(struct trace_array *tr, const char *system) in trace_events_enabled() argument
1845 list_for_each_entry(file, &tr->events, list) { in trace_events_enabled()
1878 struct trace_array *tr = dir->tr; in system_enable_read() local
1883 set = trace_events_enabled(tr, system ? system->name : NULL); in system_enable_read()
1907 ret = tracing_update_buffers(dir->tr); in system_enable_write()
1921 ret = __ftrace_set_clr_event(dir->tr, NULL, name, NULL, val, NULL); in system_enable_write()
2164 struct trace_array *tr = NULL, *iter_tr; in subsystem_open() local
2178 tr = iter_tr; in subsystem_open()
2196 if (trace_array_get(tr) < 0) { in subsystem_open()
2203 trace_array_put(tr); in subsystem_open()
2213 struct trace_array *tr = inode->i_private; in system_tr_open() local
2226 dir->tr = tr; in system_tr_open()
2236 trace_array_put(dir->tr); in subsystem_release()
2306 struct trace_array *tr = filp->private_data; in show_header_page_file() local
2319 ring_buffer_print_page_header(tr->array_buffer.buffer, s); in show_header_page_file()
2354 struct trace_array *tr = data; in ignore_task_cpu() local
2362 pid_list = rcu_dereference_protected(tr->filtered_pids, in ignore_task_cpu()
2364 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids, in ignore_task_cpu()
2367 this_cpu_write(tr->array_buffer.data->ignore_pid, in ignore_task_cpu()
2371 static void register_pid_events(struct trace_array *tr) in register_pid_events() argument
2380 tr, INT_MAX); in register_pid_events()
2382 tr, 0); in register_pid_events()
2385 tr, INT_MAX); in register_pid_events()
2387 tr, 0); in register_pid_events()
2390 tr, INT_MAX); in register_pid_events()
2392 tr, 0); in register_pid_events()
2395 tr, INT_MAX); in register_pid_events()
2397 tr, 0); in register_pid_events()
2405 struct trace_array *tr = m->private; in event_pid_write() local
2415 ret = tracing_update_buffers(tr); in event_pid_write()
2422 filtered_pids = rcu_dereference_protected(tr->filtered_pids, in event_pid_write()
2424 other_pids = rcu_dereference_protected(tr->filtered_no_pids, in event_pid_write()
2427 filtered_pids = rcu_dereference_protected(tr->filtered_no_pids, in event_pid_write()
2429 other_pids = rcu_dereference_protected(tr->filtered_pids, in event_pid_write()
2438 rcu_assign_pointer(tr->filtered_pids, pid_list); in event_pid_write()
2440 rcu_assign_pointer(tr->filtered_no_pids, pid_list); in event_pid_write()
2442 list_for_each_entry(file, &tr->events, list) { in event_pid_write()
2450 register_pid_events(tr); in event_pid_write()
2458 on_each_cpu(ignore_task_cpu, tr, 1); in event_pid_write()
2635 struct trace_array *tr = inode->i_private; in ftrace_event_release() local
2637 trace_array_put(tr); in ftrace_event_release()
2655 struct trace_array *tr = inode->i_private; in ftrace_event_set_open() local
2658 ret = tracing_check_open_get_tr(tr); in ftrace_event_set_open()
2664 ftrace_clear_events(tr); in ftrace_event_set_open()
2668 trace_array_put(tr); in ftrace_event_set_open()
2676 struct trace_array *tr = inode->i_private; in ftrace_event_set_pid_open() local
2679 ret = tracing_check_open_get_tr(tr); in ftrace_event_set_pid_open()
2685 ftrace_clear_event_pids(tr, TRACE_PIDS); in ftrace_event_set_pid_open()
2689 trace_array_put(tr); in ftrace_event_set_pid_open()
2697 struct trace_array *tr = inode->i_private; in ftrace_event_set_npid_open() local
2700 ret = tracing_check_open_get_tr(tr); in ftrace_event_set_npid_open()
2706 ftrace_clear_event_pids(tr, TRACE_NO_PIDS); in ftrace_event_set_npid_open()
2710 trace_array_put(tr); in ftrace_event_set_npid_open()
2762 event_subsystem_dir(struct trace_array *tr, const char *name, in event_subsystem_dir() argument
2781 list_for_each_entry(dir, &tr->systems, list) { in event_subsystem_dir()
2824 dir->tr = tr; in event_subsystem_dir()
2830 list_add(&dir->list, &tr->systems); in event_subsystem_dir()
2968 struct trace_array *tr = file->tr; in event_create_dir() local
3026 e_events = event_subsystem_dir(tr, call->class->system, file, parent); in event_create_dir()
3056 struct trace_array *tr; in remove_event_from_tracers() local
3058 do_for_each_event_file_safe(tr, file) { in remove_event_from_tracers()
3075 struct trace_array *tr; in event_remove() local
3078 do_for_each_event_file(tr, file) { in event_remove()
3083 tr->clear_trace = true; in event_remove()
3385 struct trace_array *tr) in trace_create_new_event() argument
3392 if (!event_in_systems(call, tr->system_names)) in trace_create_new_event()
3399 pid_list = rcu_dereference_protected(tr->filtered_pids, in trace_create_new_event()
3401 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids, in trace_create_new_event()
3409 file->tr = tr; in trace_create_new_event()
3413 list_add(&file->list, &tr->events); in trace_create_new_event()
3457 __trace_add_new_event(struct trace_event_call *call, struct trace_array *tr) in __trace_add_new_event() argument
3461 file = trace_create_new_event(call, tr); in __trace_add_new_event()
3475 return event_create_dir(tr->event_dir, file); in __trace_add_new_event()
3505 struct trace_array *tr) in __trace_early_add_new_event() argument
3510 file = trace_create_new_event(call, tr); in __trace_early_add_new_event()
3564 struct trace_array *tr; in probe_remove_event_call() local
3571 do_for_each_event_file(tr, file) { in probe_remove_event_call()
3583 tr->clear_trace = true; in probe_remove_event_call()
3598 list_for_each_entry(tr, &ftrace_trace_arrays, list) { in probe_remove_event_call()
3599 tr->clear_trace = false; in probe_remove_event_call()
3627 static void update_mod_cache(struct trace_array *tr, struct module *mod) in update_mod_cache() argument
3631 list_for_each_entry_safe(event_mod, n, &tr->mod_events, list) { in update_mod_cache()
3635 __ftrace_set_clr_event_nolock(tr, event_mod->match, in update_mod_cache()
3644 struct trace_array *tr; in update_cache_events() local
3646 list_for_each_entry(tr, &ftrace_trace_arrays, list) in update_cache_events()
3647 update_mod_cache(tr, mod); in update_cache_events()
3737 __trace_add_event_dirs(struct trace_array *tr) in __trace_add_event_dirs() argument
3743 ret = __trace_add_new_event(call, tr); in __trace_add_event_dirs()
3752 __find_event_file(struct trace_array *tr, const char *system, const char *event) in __find_event_file() argument
3758 list_for_each_entry(file, &tr->events, list) { in __find_event_file()
3775 find_event_file(struct trace_array *tr, const char *system, const char *event) in find_event_file() argument
3779 file = __find_event_file(tr, system, event); in find_event_file()
3811 struct trace_array *tr = top_trace_array(); in trace_get_event_file() local
3816 tr = trace_array_find_get(instance); in trace_get_event_file()
3817 if (!tr) in trace_get_event_file()
3820 ret = trace_array_get(tr); in trace_get_event_file()
3827 file = find_event_file(tr, system, event); in trace_get_event_file()
3829 trace_array_put(tr); in trace_get_event_file()
3836 trace_array_put(tr); in trace_get_event_file()
3859 trace_array_put(file->tr); in trace_put_event_file()
3886 struct trace_array *tr, struct ftrace_probe_ops *ops, in event_enable_probe() argument
3903 struct trace_array *tr, struct ftrace_probe_ops *ops, in event_enable_count_probe() argument
3960 event_enable_init(struct ftrace_probe_ops *ops, struct trace_array *tr, in event_enable_init() argument
3998 event_enable_free(struct ftrace_probe_ops *ops, struct trace_array *tr, in event_enable_free() argument
4051 event_enable_func(struct trace_array *tr, struct ftrace_hash *hash, in event_enable_func() argument
4064 if (!tr) in event_enable_func()
4079 file = find_event_file(tr, system, event); in event_enable_func()
4091 return unregister_ftrace_function_probe_func(glob+1, tr, ops); in event_enable_func()
4126 ret = register_ftrace_function_probe(glob, tr, ops, data); in event_enable_func()
4181 static void __trace_early_add_event_dirs(struct trace_array *tr) in __trace_early_add_event_dirs() argument
4187 list_for_each_entry(file, &tr->events, list) { in __trace_early_add_event_dirs()
4188 ret = event_create_dir(tr->event_dir, file); in __trace_early_add_event_dirs()
4201 void __trace_early_add_events(struct trace_array *tr) in __trace_early_add_events() argument
4212 ret = __trace_early_add_new_event(call, tr); in __trace_early_add_events()
4221 __trace_remove_event_dirs(struct trace_array *tr) in __trace_remove_event_dirs() argument
4225 list_for_each_entry_safe(file, next, &tr->events, list) in __trace_remove_event_dirs()
4231 struct trace_array *tr; in __add_event_to_tracers() local
4233 list_for_each_entry(tr, &ftrace_trace_arrays, list) in __add_event_to_tracers()
4234 __trace_add_new_event(call, tr); in __add_event_to_tracers()
4276 create_event_toplevel_files(struct dentry *parent, struct trace_array *tr) in create_event_toplevel_files() argument
4297 tr, &ftrace_set_event_fops); in create_event_toplevel_files()
4304 nr_entries, tr); in create_event_toplevel_files()
4313 tr, &ftrace_set_event_pid_fops); in create_event_toplevel_files()
4316 TRACE_MODE_WRITE, parent, tr, in create_event_toplevel_files()
4319 tr->event_dir = e_events; in create_event_toplevel_files()
4337 int event_trace_add_tracer(struct dentry *parent, struct trace_array *tr) in event_trace_add_tracer() argument
4343 ret = create_event_toplevel_files(parent, tr); in event_trace_add_tracer()
4349 if (unlikely(!list_empty(&tr->events))) in event_trace_add_tracer()
4350 __trace_early_add_event_dirs(tr); in event_trace_add_tracer()
4352 __trace_add_event_dirs(tr); in event_trace_add_tracer()
4364 early_event_add_tracer(struct dentry *parent, struct trace_array *tr) in early_event_add_tracer() argument
4370 ret = create_event_toplevel_files(parent, tr); in early_event_add_tracer()
4375 __trace_early_add_event_dirs(tr); in early_event_add_tracer()
4382 int event_trace_del_tracer(struct trace_array *tr) in event_trace_del_tracer() argument
4387 clear_event_triggers(tr); in event_trace_del_tracer()
4390 __ftrace_clear_event_pids(tr, TRACE_PIDS | TRACE_NO_PIDS); in event_trace_del_tracer()
4393 __ftrace_set_clr_event_nolock(tr, NULL, NULL, NULL, 0, NULL); in event_trace_del_tracer()
4399 __trace_remove_event_dirs(tr); in event_trace_del_tracer()
4400 eventfs_remove_events_dir(tr->event_dir); in event_trace_del_tracer()
4403 tr->event_dir = NULL; in event_trace_del_tracer()
4416 early_enable_events(struct trace_array *tr, char *buf, bool disable_first) in early_enable_events() argument
4430 ftrace_set_clr_event(tr, token, 0); in early_enable_events()
4432 ret = ftrace_set_clr_event(tr, token, 1); in early_enable_events()
4445 struct trace_array *tr = top_trace_array(); in event_trace_enable() local
4449 if (!tr) in event_trace_enable()
4468 __trace_early_add_events(tr); in event_trace_enable()
4470 early_enable_events(tr, bootup_event_buf, false); in event_trace_enable()
4492 struct trace_array *tr; in event_trace_enable_again() local
4494 tr = top_trace_array(); in event_trace_enable_again()
4495 if (!tr) in event_trace_enable_again()
4498 early_enable_events(tr, bootup_event_buf, true); in event_trace_enable_again()
4519 struct trace_array *tr; in event_trace_init() local
4522 tr = top_trace_array(); in event_trace_init()
4523 if (!tr) in event_trace_init()
4527 NULL, tr, &ftrace_avail_fops); in event_trace_init()
4529 ret = early_event_add_tracer(NULL, tr); in event_trace_init()
4615 struct trace_array *tr; in event_trace_self_tests() local
4618 tr = top_trace_array(); in event_trace_self_tests()
4619 if (!tr) in event_trace_self_tests()
4624 list_for_each_entry(file, &tr->events, list) { in event_trace_self_tests()
4667 list_for_each_entry(dir, &tr->systems, list) { in event_trace_self_tests()
4677 ret = __ftrace_set_clr_event(tr, NULL, system->name, NULL, 1, NULL); in event_trace_self_tests()
4686 ret = __ftrace_set_clr_event(tr, NULL, system->name, NULL, 0, NULL); in event_trace_self_tests()
4701 ret = __ftrace_set_clr_event(tr, NULL, NULL, NULL, 1, NULL); in event_trace_self_tests()
4710 ret = __ftrace_set_clr_event(tr, NULL, NULL, NULL, 0, NULL); in event_trace_self_tests()
4769 event_trace_file.tr = top_trace_array(); in event_trace_self_test_with_function()
4770 if (WARN_ON(!event_trace_file.tr)) in event_trace_self_test_with_function()