Lines Matching refs:tr

64 #define do_for_each_event_file(tr, file)			\
65 list_for_each_entry(tr, &ftrace_trace_arrays, list) { \
66 list_for_each_entry(file, &tr->events, list)
68 #define do_for_each_event_file_safe(tr, file) \
69 list_for_each_entry(tr, &ftrace_trace_arrays, list) { \
71 list_for_each_entry_safe(file, ___n, &tr->events, list)
235 struct trace_array *tr = trace_file->tr;
240 pid_list = rcu_dereference_raw(tr->filtered_pids);
241 no_pid_list = rcu_dereference_raw(tr->filtered_no_pids);
246 data = this_cpu_ptr(tr->array_buffer.data);
328 struct trace_array *tr;
332 do_for_each_event_file(tr, file) {
350 struct trace_array *tr;
354 do_for_each_event_file(tr, file) {
373 struct trace_array *tr = file->tr;
448 if (tr->trace_flags & TRACE_ITER_RECORD_CMD) {
454 if (tr->trace_flags & TRACE_ITER_RECORD_TGID) {
493 static void ftrace_clear_events(struct trace_array *tr)
498 list_for_each_entry(file, &tr->events, list) {
508 struct trace_array *tr = data;
510 pid_list = rcu_dereference_raw(tr->filtered_pids);
513 pid_list = rcu_dereference_raw(tr->filtered_no_pids);
523 struct trace_array *tr = data;
525 pid_list = rcu_dereference_sched(tr->filtered_pids);
528 pid_list = rcu_dereference_sched(tr->filtered_no_pids);
532 void trace_event_follow_fork(struct trace_array *tr, bool enable)
536 tr, INT_MIN);
538 tr, INT_MAX);
541 tr);
543 tr);
551 struct trace_array *tr = data;
556 pid_list = rcu_dereference_sched(tr->filtered_pids);
557 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids);
566 this_cpu_write(tr->array_buffer.data->ignore_pid, ret ||
575 struct trace_array *tr = data;
579 pid_list = rcu_dereference_sched(tr->filtered_pids);
580 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids);
582 this_cpu_write(tr->array_buffer.data->ignore_pid,
589 struct trace_array *tr = data;
594 if (!this_cpu_read(tr->array_buffer.data->ignore_pid))
597 pid_list = rcu_dereference_sched(tr->filtered_pids);
598 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids);
600 this_cpu_write(tr->array_buffer.data->ignore_pid,
607 struct trace_array *tr = data;
612 if (this_cpu_read(tr->array_buffer.data->ignore_pid))
615 pid_list = rcu_dereference_sched(tr->filtered_pids);
616 no_pid_list = rcu_dereference_sched(tr->filtered_no_pids);
619 this_cpu_write(tr->array_buffer.data->ignore_pid,
623 static void unregister_pid_events(struct trace_array *tr)
625 unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_pre, tr);
626 unregister_trace_sched_switch(event_filter_pid_sched_switch_probe_post, tr);
628 unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_pre, tr);
629 unregister_trace_sched_wakeup(event_filter_pid_sched_wakeup_probe_post, tr);
631 unregister_trace_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_pre, tr);
632 unregister_trace_sched_wakeup_new(event_filter_pid_sched_wakeup_probe_post, tr);
634 unregister_trace_sched_waking(event_filter_pid_sched_wakeup_probe_pre, tr);
635 unregister_trace_sched_waking(event_filter_pid_sched_wakeup_probe_post, tr);
638 static void __ftrace_clear_event_pids(struct trace_array *tr, int type)
645 pid_list = rcu_dereference_protected(tr->filtered_pids,
647 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids,
655 unregister_pid_events(tr);
657 list_for_each_entry(file, &tr->events, list) {
662 per_cpu_ptr(tr->array_buffer.data, cpu)->ignore_pid = false;
666 rcu_assign_pointer(tr->filtered_pids, NULL);
669 rcu_assign_pointer(tr->filtered_no_pids, NULL);
681 static void ftrace_clear_event_pids(struct trace_array *tr, int type)
684 __ftrace_clear_event_pids(tr, type);
787 __ftrace_set_clr_event_nolock(struct trace_array *tr, const char *match,
796 list_for_each_entry(file, &tr->events, list) {
834 static int __ftrace_set_clr_event(struct trace_array *tr, const char *match,
840 ret = __ftrace_set_clr_event_nolock(tr, match, sub, event, set);
846 int ftrace_set_clr_event(struct trace_array *tr, char *buf, int set)
851 if (!tr)
877 ret = __ftrace_set_clr_event(tr, match, sub, event, set);
900 struct trace_array *tr = top_trace_array();
902 if (!tr)
905 return __ftrace_set_clr_event(tr, NULL, system, event, set);
911 * @tr: concerned trace array.
922 int trace_array_set_clr_event(struct trace_array *tr, const char *system,
927 if (!tr)
931 return __ftrace_set_clr_event(tr, NULL, system, event, set);
944 struct trace_array *tr = m->private;
965 ret = ftrace_set_clr_event(tr, parser.buffer + !set, set);
983 struct trace_array *tr = m->private;
987 list_for_each_entry_continue(file, &tr->events, list) {
1004 struct trace_array *tr = m->private;
1009 file = list_entry(&tr->events, struct trace_event_file, list);
1022 struct trace_array *tr = m->private;
1026 list_for_each_entry_continue(file, &tr->events, list) {
1037 struct trace_array *tr = m->private;
1042 file = list_entry(&tr->events, struct trace_event_file, list);
1071 struct trace_array *tr = m->private;
1075 pid_list = rcu_dereference_sched(tr->filtered_pids);
1077 pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1098 struct trace_array *tr = m->private;
1102 * tr->filtered_pids as p_start() has.
1103 * If we just passed the tr->filtered_pids around, then RCU would
1110 pid_list = rcu_dereference_sched(tr->filtered_pids);
1112 pid_list = rcu_dereference_sched(tr->filtered_no_pids);
1214 struct trace_array *tr = dir->tr;
1220 list_for_each_entry(file, &tr->events, list) {
1280 ret = __ftrace_set_clr_event(dir->tr, NULL, name, NULL, val);
1509 struct trace_array *tr;
1518 list_for_each_entry(tr, &ftrace_trace_arrays, list) {
1519 list_for_each_entry(dir, &tr->systems, list) {
1541 if (trace_array_get(tr) < 0) {
1548 trace_array_put(tr);
1558 struct trace_array *tr = inode->i_private;
1561 /* Make a temporary dir that has no system but points to tr */
1571 dir->tr = tr;
1581 trace_array_put(dir->tr);
1675 struct trace_array *tr = data;
1683 pid_list = rcu_dereference_protected(tr->filtered_pids,
1685 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids,
1688 this_cpu_write(tr->array_buffer.data->ignore_pid,
1692 static void register_pid_events(struct trace_array *tr)
1701 tr, INT_MAX);
1703 tr, 0);
1706 tr, INT_MAX);
1708 tr, 0);
1711 tr, INT_MAX);
1713 tr, 0);
1716 tr, INT_MAX);
1718 tr, 0);
1726 struct trace_array *tr = m->private;
1743 filtered_pids = rcu_dereference_protected(tr->filtered_pids,
1745 other_pids = rcu_dereference_protected(tr->filtered_no_pids,
1748 filtered_pids = rcu_dereference_protected(tr->filtered_no_pids,
1750 other_pids = rcu_dereference_protected(tr->filtered_pids,
1759 rcu_assign_pointer(tr->filtered_pids, pid_list);
1761 rcu_assign_pointer(tr->filtered_no_pids, pid_list);
1763 list_for_each_entry(file, &tr->events, list) {
1771 register_pid_events(tr);
1779 on_each_cpu(ignore_task_cpu, tr, 1);
1942 /* copy tr over to seq ops */
1950 struct trace_array *tr = inode->i_private;
1952 trace_array_put(tr);
1970 struct trace_array *tr = inode->i_private;
1973 ret = tracing_check_open_get_tr(tr);
1979 ftrace_clear_events(tr);
1983 trace_array_put(tr);
1991 struct trace_array *tr = inode->i_private;
1994 ret = tracing_check_open_get_tr(tr);
2000 ftrace_clear_event_pids(tr, TRACE_PIDS);
2004 trace_array_put(tr);
2012 struct trace_array *tr = inode->i_private;
2015 ret = tracing_check_open_get_tr(tr);
2021 ftrace_clear_event_pids(tr, TRACE_NO_PIDS);
2025 trace_array_put(tr);
2063 event_subsystem_dir(struct trace_array *tr, const char *name,
2071 list_for_each_entry(dir, &tr->systems, list) {
2107 dir->tr = tr;
2124 list_add(&dir->list, &tr->systems);
2178 struct trace_array *tr = file->tr;
2188 d_events = event_subsystem_dir(tr, call->class->system, file, parent);
2253 struct trace_array *tr;
2255 do_for_each_event_file_safe(tr, file) {
2272 struct trace_array *tr;
2275 do_for_each_event_file(tr, file) {
2280 tr->clear_trace = true;
2473 struct trace_array *tr)
2483 pid_list = rcu_dereference_protected(tr->filtered_pids,
2485 no_pid_list = rcu_dereference_protected(tr->filtered_no_pids,
2492 file->tr = tr;
2496 list_add(&file->list, &tr->events);
2504 __trace_add_new_event(struct trace_event_call *call, struct trace_array *tr)
2508 file = trace_create_new_event(call, tr);
2513 return event_create_dir(tr->event_dir, file);
2525 struct trace_array *tr)
2529 file = trace_create_new_event(call, tr);
2569 struct trace_array *tr;
2576 do_for_each_event_file(tr, file) {
2588 tr->clear_trace = true;
2603 list_for_each_entry(tr, &ftrace_trace_arrays, list) {
2604 tr->clear_trace = false;
2706 __trace_add_event_dirs(struct trace_array *tr)
2712 ret = __trace_add_new_event(call, tr);
2721 __find_event_file(struct trace_array *tr, const char *system, const char *event)
2727 list_for_each_entry(file, &tr->events, list) {
2744 find_event_file(struct trace_array *tr, const char *system, const char *event)
2748 file = __find_event_file(tr, system, event);
2780 struct trace_array *tr = top_trace_array();
2785 tr = trace_array_find_get(instance);
2786 if (!tr)
2789 ret = trace_array_get(tr);
2796 file = find_event_file(tr, system, event);
2798 trace_array_put(tr);
2806 trace_array_put(tr);
2837 trace_array_put(file->tr);
2864 struct trace_array *tr, struct ftrace_probe_ops *ops,
2881 struct trace_array *tr, struct ftrace_probe_ops *ops,
2938 event_enable_init(struct ftrace_probe_ops *ops, struct trace_array *tr,
2976 event_enable_free(struct ftrace_probe_ops *ops, struct trace_array *tr,
3029 event_enable_func(struct trace_array *tr, struct ftrace_hash *hash,
3041 if (!tr)
3057 file = find_event_file(tr, system, event);
3069 ret = unregister_ftrace_function_probe_func(glob+1, tr, ops);
3112 ret = register_ftrace_function_probe(glob, tr, ops, data);
3171 static void __trace_early_add_event_dirs(struct trace_array *tr)
3177 list_for_each_entry(file, &tr->events, list) {
3178 ret = event_create_dir(tr->event_dir, file);
3191 void __trace_early_add_events(struct trace_array *tr)
3201 ret = __trace_early_add_new_event(call, tr);
3210 __trace_remove_event_dirs(struct trace_array *tr)
3214 list_for_each_entry_safe(file, next, &tr->events, list)
3220 struct trace_array *tr;
3222 list_for_each_entry(tr, &ftrace_trace_arrays, list)
3223 __trace_add_new_event(call, tr);
3243 create_event_toplevel_files(struct dentry *parent, struct trace_array *tr)
3249 tr, &ftrace_set_event_fops);
3262 tr, &ftrace_tr_enable_fops);
3271 tr, &ftrace_set_event_pid_fops);
3276 tr, &ftrace_set_event_notrace_pid_fops);
3293 tr->event_dir = d_events;
3301 * @tr: The trace array associated with these events
3311 int event_trace_add_tracer(struct dentry *parent, struct trace_array *tr)
3317 ret = create_event_toplevel_files(parent, tr);
3322 /* If tr already has the event list, it is initialized in early boot. */
3323 if (unlikely(!list_empty(&tr->events)))
3324 __trace_early_add_event_dirs(tr);
3326 __trace_add_event_dirs(tr);
3338 early_event_add_tracer(struct dentry *parent, struct trace_array *tr)
3344 ret = create_event_toplevel_files(parent, tr);
3349 __trace_early_add_event_dirs(tr);
3359 int event_trace_del_tracer(struct trace_array *tr)
3364 clear_event_triggers(tr);
3367 __ftrace_clear_event_pids(tr, TRACE_PIDS | TRACE_NO_PIDS);
3370 __ftrace_set_clr_event_nolock(tr, NULL, NULL, NULL, 0);
3376 __trace_remove_event_dirs(tr);
3377 tracefs_remove(tr->event_dir);
3380 tr->event_dir = NULL;
3393 early_enable_events(struct trace_array *tr, bool disable_first)
3408 ftrace_set_clr_event(tr, token, 0);
3410 ret = ftrace_set_clr_event(tr, token, 1);
3423 struct trace_array *tr = top_trace_array();
3427 if (!tr)
3444 __trace_early_add_events(tr);
3446 early_enable_events(tr, false);
3469 struct trace_array *tr;
3471 tr = top_trace_array();
3472 if (!tr)
3475 early_enable_events(tr, true);
3496 struct trace_array *tr;
3500 tr = top_trace_array();
3501 if (!tr)
3505 tr, &ftrace_avail_fops);
3509 ret = early_event_add_tracer(NULL, tr);
3595 struct trace_array *tr;
3598 tr = top_trace_array();
3599 if (!tr)
3604 list_for_each_entry(file, &tr->events, list) {
3647 list_for_each_entry(dir, &tr->systems, list) {
3657 ret = __ftrace_set_clr_event(tr, NULL, system->name, NULL, 1);
3666 ret = __ftrace_set_clr_event(tr, NULL, system->name, NULL, 0);
3681 ret = __ftrace_set_clr_event(tr, NULL, NULL, NULL, 1);
3690 ret = __ftrace_set_clr_event(tr, NULL, NULL, NULL, 0);
3753 event_trace_file.tr = top_trace_array();
3754 if (WARN_ON(!event_trace_file.tr))