Lines Matching defs:tr

72 #define do_for_each_event_file(tr, file)			\
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) \
77 list_for_each_entry(tr, &ftrace_trace_arrays, list) { \
79 list_for_each_entry_safe(file, ___n, &tr->events, list)
634 struct trace_array *tr = trace_file->tr;
638 pid_list = rcu_dereference_raw(tr->filtered_pids);
639 no_pid_list = rcu_dereference_raw(tr->filtered_no_pids);
648 return this_cpu_read(tr->array_buffer.data->ignore_pid) != 0;
725 struct trace_array *tr;
729 do_for_each_event_file(tr, file) {
747 struct trace_array *tr;
751 do_for_each_event_file(tr, file) {
770 struct trace_array *tr = file->tr;
848 if (tr->trace_flags & TRACE_ITER_RECORD_CMD) {
854 if (tr->trace_flags & TRACE_ITER_RECORD_TGID) {
912 static void clear_mod_events(struct trace_array *tr)
916 list_for_each_entry_safe(event_mod, n, &tr->mod_events, list) {
921 static int remove_cache_mod(struct trace_array *tr, const char *mod,
927 list_for_each_entry_safe(event_mod, n, &tr->mod_events, list) {
949 static int cache_mod(struct trace_array *tr, const char *mod, int set,
960 return remove_cache_mod(tr, mod, match, system, event);
989 list_add(&event_mod->list, &tr->mod_events);
999 static inline void clear_mod_events(struct trace_array *tr) { }
1000 static int cache_mod(struct trace_array *tr, const char *mod, int set,
1007 static void ftrace_clear_events(struct trace_array *tr)
1012 list_for_each_entry(file, &tr->events, list) {
1015 clear_mod_events(tr);
1023 struct trace_array *tr = data;
1025 pid_list = rcu_dereference_raw(tr->filtered_pids);
1028 pid_list = rcu_dereference_raw(tr->filtered_no_pids);
1038 struct trace_array *tr = data;
1040 pid_list = rcu_dereference_sched(tr->filtered_pids);
1043 pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1047 void trace_event_follow_fork(struct trace_array *tr, bool enable)
1051 tr, INT_MIN);
1053 tr, INT_MAX);
1056 tr);
1058 tr);
1068 struct trace_array *tr = data;
1073 pid_list = rcu_dereference_sched(tr->filtered_pids);
1074 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1083 this_cpu_write(tr->array_buffer.data->ignore_pid, ret ||
1094 struct trace_array *tr = data;
1098 pid_list = rcu_dereference_sched(tr->filtered_pids);
1099 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1101 this_cpu_write(tr->array_buffer.data->ignore_pid,
1108 struct trace_array *tr = data;
1113 if (!this_cpu_read(tr->array_buffer.data->ignore_pid))
1116 pid_list = rcu_dereference_sched(tr->filtered_pids);
1117 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1119 this_cpu_write(tr->array_buffer.data->ignore_pid,
1126 struct trace_array *tr = data;
1131 if (this_cpu_read(tr->array_buffer.data->ignore_pid))
1134 pid_list = rcu_dereference_sched(tr->filtered_pids);
1135 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1138 this_cpu_write(tr->array_buffer.data->ignore_pid,
1142 static void unregister_pid_events(struct trace_array *tr)
1144 unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_pre, tr);
1145 unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_post, tr);
1147 unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_pre, tr);
1148 unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_post, tr);
1150 unregister_trace_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_pre, tr);
1151 unregister_trace_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_post, tr);
1153 unregister_trace_sched_waking(event_filter_pid_sched_wakeup_probe_pre, tr);
1154 unregister_trace_sched_waking(event_filter_pid_sched_wakeup_probe_post, tr);
1157 static void __ftrace_clear_event_pids(struct trace_array *tr, int type)
1164 pid_list = rcu_dereference_protected(tr->filtered_pids,
1166 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids,
1174 unregister_pid_events(tr);
1176 list_for_each_entry(file, &tr->events, list) {
1181 per_cpu_ptr(tr->array_buffer.data, cpu)->ignore_pid = false;
1185 rcu_assign_pointer(tr->filtered_pids, NULL);
1188 rcu_assign_pointer(tr->filtered_no_pids, NULL);
1200 static void ftrace_clear_event_pids(struct trace_array *tr, int type)
1203 __ftrace_clear_event_pids(tr, type);
1303 __ftrace_set_clr_event_nolock(struct trace_array *tr, const char *match,
1326 list_for_each_entry(file, &tr->events, list) {
1371 ret = cache_mod(tr, module, set, match, sub, event);
1376 static int __ftrace_set_clr_event(struct trace_array *tr, const char *match,
1383 ret = __ftrace_set_clr_event_nolock(tr, match, sub, event, set, mod);
1389 int ftrace_set_clr_event(struct trace_array *tr, char *buf, int set)
1394 if (!tr)
1433 ret = __ftrace_set_clr_event(tr, match, sub, event, set, mod);
1456 struct trace_array *tr = top_trace_array();
1458 if (!tr)
1461 return __ftrace_set_clr_event(tr, NULL, system, event, set, NULL);
1467 * @tr: concerned trace array.
1478 int trace_array_set_clr_event(struct trace_array *tr, const char *system,
1483 if (!tr)
1487 return __ftrace_set_clr_event(tr, NULL, system, event, set, NULL);
1500 struct trace_array *tr = m->private;
1506 ret = tracing_update_buffers(tr);
1521 ret = ftrace_set_clr_event(tr, parser.buffer + !set, set);
1539 struct trace_array *tr = m->private;
1543 list_for_each_entry_continue(file, &tr->events, list) {
1560 struct trace_array *tr = m->private;
1565 file = list_entry(&tr->events, struct trace_event_file, list);
1592 struct trace_array *tr = m->private;
1598 list_for_each_entry_continue(file, &tr->events, list) {
1606 iter->event_mod = list_entry(&tr->mod_events, struct event_mod_load, list);
1611 list_for_each_entry_continue(iter->event_mod, &tr->mod_events, list)
1627 struct trace_array *tr = m->private;
1638 iter->file = list_entry(&tr->events, struct trace_event_file, list);
1707 struct trace_array *tr = m->private;
1711 pid_list = rcu_dereference_sched(tr->filtered_pids);
1713 pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1734 struct trace_array *tr = m->private;
1738 * tr->filtered_pids as p_start() has.
1739 * If we just passed the tr->filtered_pids around, then RCU would
1746 pid_list = rcu_dereference_sched(tr->filtered_pids);
1748 pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1824 ret = tracing_update_buffers(file->tr);
1848 int trace_events_enabled(struct trace_array *tr, const char *system)
1856 list_for_each_entry(file, &tr->events, list) {
1889 struct trace_array *tr = dir->tr;
1894 set = trace_events_enabled(tr, system ? system->name : NULL);
1918 ret = tracing_update_buffers(dir->tr);
1932 ret = __ftrace_set_clr_event(dir->tr, NULL, name, NULL, val, NULL);
2175 struct trace_array *tr = NULL, *iter_tr;
2189 tr = iter_tr;
2207 if (trace_array_get(tr) < 0) {
2214 trace_array_put(tr);
2224 struct trace_array *tr = inode->i_private;
2227 /* Make a temporary dir that has no system but points to tr */
2237 dir->tr = tr;
2247 trace_array_put(dir->tr);
2317 struct trace_array *tr = filp->private_data;
2330 ring_buffer_print_page_header(tr->array_buffer.buffer, s);
2365 struct trace_array *tr = data;
2373 pid_list = rcu_dereference_protected(tr->filtered_pids,
2375 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids,
2378 this_cpu_write(tr->array_buffer.data->ignore_pid,
2382 static void register_pid_events(struct trace_array *tr)
2391 tr, INT_MAX);
2393 tr, 0);
2396 tr, INT_MAX);
2398 tr, 0);
2401 tr, INT_MAX);
2403 tr, 0);
2406 tr, INT_MAX);
2408 tr, 0);
2416 struct trace_array *tr = m->private;
2426 ret = tracing_update_buffers(tr);
2433 filtered_pids = rcu_dereference_protected(tr->filtered_pids,
2435 other_pids = rcu_dereference_protected(tr->filtered_no_pids,
2438 filtered_pids = rcu_dereference_protected(tr->filtered_no_pids,
2440 other_pids = rcu_dereference_protected(tr->filtered_pids,
2449 rcu_assign_pointer(tr->filtered_pids, pid_list);
2451 rcu_assign_pointer(tr->filtered_no_pids, pid_list);
2453 list_for_each_entry(file, &tr->events, list) {
2461 register_pid_events(tr);
2469 on_each_cpu(ignore_task_cpu, tr, 1);
2638 /* copy tr over to seq ops */
2646 struct trace_array *tr = inode->i_private;
2648 trace_array_put(tr);
2666 struct trace_array *tr = inode->i_private;
2669 ret = tracing_check_open_get_tr(tr);
2675 ftrace_clear_events(tr);
2679 trace_array_put(tr);
2687 struct trace_array *tr = inode->i_private;
2690 ret = tracing_check_open_get_tr(tr);
2696 ftrace_clear_event_pids(tr, TRACE_PIDS);
2700 trace_array_put(tr);
2708 struct trace_array *tr = inode->i_private;
2711 ret = tracing_check_open_get_tr(tr);
2717 ftrace_clear_event_pids(tr, TRACE_NO_PIDS);
2721 trace_array_put(tr);
2773 event_subsystem_dir(struct trace_array *tr, const char *name,
2792 list_for_each_entry(dir, &tr->systems, list) {
2835 dir->tr = tr;
2841 list_add(&dir->list, &tr->systems);
2979 struct trace_array *tr = file->tr;
3037 e_events = event_subsystem_dir(tr, call->class->system, file, parent);
3067 struct trace_array *tr;
3069 do_for_each_event_file_safe(tr, file) {
3086 struct trace_array *tr;
3089 do_for_each_event_file(tr, file) {
3094 tr->clear_trace = true;
3485 struct trace_array *tr)
3492 if (!event_in_systems(call, tr->system_names))
3499 pid_list = rcu_dereference_protected(tr->filtered_pids,
3501 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids,
3509 file->tr = tr;
3513 list_add(&file->list, &tr->events);
3557 __trace_add_new_event(struct trace_event_call *call, struct trace_array *tr)
3561 file = trace_create_new_event(call, tr);
3564 * allocation, or NULL if the event is not part of the tr->system_names.
3565 * When the event is not part of the tr->system_names, return zero, not
3575 return event_create_dir(tr->event_dir, file);
3605 struct trace_array *tr)
3610 file = trace_create_new_event(call, tr);
3613 * allocation, or NULL if the event is not part of the tr->system_names.
3614 * When the event is not part of the tr->system_names, return zero, not
3664 struct trace_array *tr;
3671 do_for_each_event_file(tr, file) {
3683 tr->clear_trace = true;
3698 list_for_each_entry(tr, &ftrace_trace_arrays, list) {
3699 tr->clear_trace = false;
3727 static void update_mod_cache(struct trace_array *tr, struct module *mod)
3731 list_for_each_entry_safe(event_mod, n, &tr->mod_events, list) {
3735 __ftrace_set_clr_event_nolock(tr, event_mod->match,
3744 struct trace_array *tr;
3746 list_for_each_entry(tr, &ftrace_trace_arrays, list)
3747 update_mod_cache(tr, mod);
3837 __trace_add_event_dirs(struct trace_array *tr)
3845 ret = __trace_add_new_event(call, tr);
3854 __find_event_file(struct trace_array *tr, const char *system, const char *event)
3860 list_for_each_entry(file, &tr->events, list) {
3877 find_event_file(struct trace_array *tr, const char *system, const char *event)
3881 file = __find_event_file(tr, system, event);
3913 struct trace_array *tr = top_trace_array();
3918 tr = trace_array_find_get(instance);
3919 if (!tr)
3922 ret = trace_array_get(tr);
3929 file = find_event_file(tr, system, event);
3931 trace_array_put(tr);
3938 trace_array_put(tr);
3961 trace_array_put(file->tr);
3988 struct trace_array *tr, struct ftrace_probe_ops *ops,
4005 struct trace_array *tr, struct ftrace_probe_ops *ops,
4062 event_enable_init(struct ftrace_probe_ops *ops, struct trace_array *tr,
4100 event_enable_free(struct ftrace_probe_ops *ops, struct trace_array *tr,
4153 event_enable_func(struct trace_array *tr, struct ftrace_hash *hash,
4166 if (!tr)
4181 file = find_event_file(tr, system, event);
4193 return unregister_ftrace_function_probe_func(glob+1, tr, ops);
4228 ret = register_ftrace_function_probe(glob, tr, ops, data);
4283 static void __trace_early_add_event_dirs(struct trace_array *tr)
4289 list_for_each_entry(file, &tr->events, list) {
4290 ret = event_create_dir(tr->event_dir, file);
4303 void __trace_early_add_events(struct trace_array *tr)
4314 ret = __trace_early_add_new_event(call, tr);
4323 __trace_remove_event_dirs(struct trace_array *tr)
4327 list_for_each_entry_safe(file, next, &tr->events, list)
4333 struct trace_array *tr;
4335 list_for_each_entry(tr, &ftrace_trace_arrays, list)
4336 __trace_add_new_event(call, tr);
4378 create_event_toplevel_files(struct dentry *parent, struct trace_array *tr)
4399 tr, &ftrace_set_event_fops);
4406 nr_entries, tr);
4415 tr, &ftrace_set_event_pid_fops);
4418 TRACE_MODE_WRITE, parent, tr,
4421 tr->event_dir = e_events;
4429 * @tr: The trace array associated with these events
4439 int event_trace_add_tracer(struct dentry *parent, struct trace_array *tr)
4445 ret = create_event_toplevel_files(parent, tr);
4450 /* If tr already has the event list, it is initialized in early boot. */
4451 if (unlikely(!list_empty(&tr->events)))
4452 __trace_early_add_event_dirs(tr);
4454 __trace_add_event_dirs(tr);
4466 early_event_add_tracer(struct dentry *parent, struct trace_array *tr)
4472 ret = create_event_toplevel_files(parent, tr);
4477 __trace_early_add_event_dirs(tr);
4484 int event_trace_del_tracer(struct trace_array *tr)
4489 clear_event_triggers(tr);
4492 __ftrace_clear_event_pids(tr, TRACE_PIDS | TRACE_NO_PIDS);
4495 __ftrace_set_clr_event_nolock(tr, NULL, NULL, NULL, 0, NULL);
4501 __trace_remove_event_dirs(tr);
4502 eventfs_remove_events_dir(tr->event_dir);
4505 tr->event_dir = NULL;
4518 early_enable_events(struct trace_array *tr, char *buf, bool disable_first)
4532 ftrace_set_clr_event(tr, token, 0);
4534 ret = ftrace_set_clr_event(tr, token, 1);
4547 struct trace_array *tr = top_trace_array();
4551 if (!tr)
4570 __trace_early_add_events(tr);
4572 early_enable_events(tr, bootup_event_buf, false);
4594 struct trace_array *tr;
4596 tr = top_trace_array();
4597 if (!tr)
4600 early_enable_events(tr, bootup_event_buf, true);
4621 struct trace_array *tr;
4624 tr = top_trace_array();
4625 if (!tr)
4629 NULL, tr, &ftrace_avail_fops);
4631 ret = early_event_add_tracer(NULL, tr);
4717 struct trace_array *tr;
4720 tr = top_trace_array();
4721 if (!tr)
4726 list_for_each_entry(file, &tr->events, list) {
4769 list_for_each_entry(dir, &tr->systems, list) {
4779 ret = __ftrace_set_clr_event(tr, NULL, system->name, NULL, 1, NULL);
4788 ret = __ftrace_set_clr_event(tr, NULL, system->name, NULL, 0, NULL);
4803 ret = __ftrace_set_clr_event(tr, NULL, NULL, NULL, 1, NULL);
4812 ret = __ftrace_set_clr_event(tr, NULL, NULL, NULL, 0, NULL);
4871 event_trace_file.tr = top_trace_array();
4872 if (WARN_ON(!event_trace_file.tr))