• Home
  • Raw
  • Download

Lines Matching refs:tr

83 dummy_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set)  in dummy_set_flag()  argument
162 static int tracing_set_tracer(struct trace_array *tr, const char *buf);
279 struct trace_array *tr; in trace_array_get() local
283 list_for_each_entry(tr, &ftrace_trace_arrays, list) { in trace_array_get()
284 if (tr == this_tr) { in trace_array_get()
285 tr->ref++; in trace_array_get()
308 int tracing_check_open_get_tr(struct trace_array *tr) in tracing_check_open_get_tr() argument
319 if (tr && trace_array_get(tr) < 0) in tracing_check_open_get_tr()
738 static inline void ftrace_trace_stack(struct trace_array *tr,
749 static inline void ftrace_trace_stack(struct trace_array *tr, in ftrace_trace_stack() argument
782 void tracer_tracing_on(struct trace_array *tr) in tracer_tracing_on() argument
784 if (tr->trace_buffer.buffer) in tracer_tracing_on()
785 ring_buffer_record_on(tr->trace_buffer.buffer); in tracer_tracing_on()
794 tr->buffer_disabled = 0; in tracer_tracing_on()
919 void tracing_snapshot_instance_cond(struct trace_array *tr, void *cond_data) in tracing_snapshot_instance_cond() argument
921 struct tracer *tracer = tr->current_trace; in tracing_snapshot_instance_cond()
930 if (!tr->allocated_snapshot) { in tracing_snapshot_instance_cond()
945 update_max_tr(tr, current, smp_processor_id(), cond_data); in tracing_snapshot_instance_cond()
949 void tracing_snapshot_instance(struct trace_array *tr) in tracing_snapshot_instance() argument
951 tracing_snapshot_instance_cond(tr, NULL); in tracing_snapshot_instance()
970 struct trace_array *tr = &global_trace; in tracing_snapshot() local
972 tracing_snapshot_instance(tr); in tracing_snapshot()
989 void tracing_snapshot_cond(struct trace_array *tr, void *cond_data) in tracing_snapshot_cond() argument
991 tracing_snapshot_instance_cond(tr, cond_data); in tracing_snapshot_cond()
1009 void *tracing_cond_snapshot_data(struct trace_array *tr) in tracing_cond_snapshot_data() argument
1013 arch_spin_lock(&tr->max_lock); in tracing_cond_snapshot_data()
1015 if (tr->cond_snapshot) in tracing_cond_snapshot_data()
1016 cond_data = tr->cond_snapshot->cond_data; in tracing_cond_snapshot_data()
1018 arch_spin_unlock(&tr->max_lock); in tracing_cond_snapshot_data()
1028 int tracing_alloc_snapshot_instance(struct trace_array *tr) in tracing_alloc_snapshot_instance() argument
1032 if (!tr->allocated_snapshot) { in tracing_alloc_snapshot_instance()
1035 ret = resize_buffer_duplicate_size(&tr->max_buffer, in tracing_alloc_snapshot_instance()
1036 &tr->trace_buffer, RING_BUFFER_ALL_CPUS); in tracing_alloc_snapshot_instance()
1040 tr->allocated_snapshot = true; in tracing_alloc_snapshot_instance()
1046 static void free_snapshot(struct trace_array *tr) in free_snapshot() argument
1053 ring_buffer_resize(tr->max_buffer.buffer, 1, RING_BUFFER_ALL_CPUS); in free_snapshot()
1054 set_buffer_entries(&tr->max_buffer, 1); in free_snapshot()
1055 tracing_reset_online_cpus(&tr->max_buffer); in free_snapshot()
1056 tr->allocated_snapshot = false; in free_snapshot()
1071 struct trace_array *tr = &global_trace; in tracing_alloc_snapshot() local
1074 ret = tracing_alloc_snapshot_instance(tr); in tracing_alloc_snapshot()
1117 int tracing_snapshot_cond_enable(struct trace_array *tr, void *cond_data, in tracing_snapshot_cond_enable() argument
1132 ret = tracing_alloc_snapshot_instance(tr); in tracing_snapshot_cond_enable()
1136 if (tr->current_trace->use_max_tr) { in tracing_snapshot_cond_enable()
1149 if (tr->cond_snapshot) { in tracing_snapshot_cond_enable()
1154 arch_spin_lock(&tr->max_lock); in tracing_snapshot_cond_enable()
1155 tr->cond_snapshot = cond_snapshot; in tracing_snapshot_cond_enable()
1156 arch_spin_unlock(&tr->max_lock); in tracing_snapshot_cond_enable()
1179 int tracing_snapshot_cond_disable(struct trace_array *tr) in tracing_snapshot_cond_disable() argument
1183 arch_spin_lock(&tr->max_lock); in tracing_snapshot_cond_disable()
1185 if (!tr->cond_snapshot) in tracing_snapshot_cond_disable()
1188 kfree(tr->cond_snapshot); in tracing_snapshot_cond_disable()
1189 tr->cond_snapshot = NULL; in tracing_snapshot_cond_disable()
1192 arch_spin_unlock(&tr->max_lock); in tracing_snapshot_cond_disable()
1203 void tracing_snapshot_cond(struct trace_array *tr, void *cond_data) in tracing_snapshot_cond() argument
1220 void *tracing_cond_snapshot_data(struct trace_array *tr) in tracing_cond_snapshot_data() argument
1225 int tracing_snapshot_cond_enable(struct trace_array *tr, void *cond_data, cond_update_fn_t update) in tracing_snapshot_cond_enable() argument
1230 int tracing_snapshot_cond_disable(struct trace_array *tr) in tracing_snapshot_cond_disable() argument
1237 void tracer_tracing_off(struct trace_array *tr) in tracer_tracing_off() argument
1239 if (tr->trace_buffer.buffer) in tracer_tracing_off()
1240 ring_buffer_record_off(tr->trace_buffer.buffer); in tracer_tracing_off()
1249 tr->buffer_disabled = 1; in tracer_tracing_off()
1280 bool tracer_tracing_is_on(struct trace_array *tr) in tracer_tracing_is_on() argument
1282 if (tr->trace_buffer.buffer) in tracer_tracing_is_on()
1283 return ring_buffer_record_is_on(tr->trace_buffer.buffer); in tracer_tracing_is_on()
1284 return !tr->buffer_disabled; in tracer_tracing_is_on()
1362 bool trace_clock_in_ns(struct trace_array *tr) in trace_clock_in_ns() argument
1364 if (trace_clocks[tr->clock_id].in_ns) in trace_clock_in_ns()
1508 __update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu) in __update_max_tr() argument
1510 struct trace_buffer *trace_buf = &tr->trace_buffer; in __update_max_tr()
1511 struct trace_buffer *max_buf = &tr->max_buffer; in __update_max_tr()
1518 max_data->saved_latency = tr->max_latency; in __update_max_tr()
1552 update_max_tr(struct trace_array *tr, struct task_struct *tsk, int cpu, in update_max_tr() argument
1555 if (tr->stop_count) in update_max_tr()
1560 if (!tr->allocated_snapshot) { in update_max_tr()
1562 WARN_ON_ONCE(tr->current_trace != &nop_trace); in update_max_tr()
1566 arch_spin_lock(&tr->max_lock); in update_max_tr()
1569 if (ring_buffer_record_is_set_on(tr->trace_buffer.buffer)) in update_max_tr()
1570 ring_buffer_record_on(tr->max_buffer.buffer); in update_max_tr()
1572 ring_buffer_record_off(tr->max_buffer.buffer); in update_max_tr()
1575 if (tr->cond_snapshot && !tr->cond_snapshot->update(tr, cond_data)) in update_max_tr()
1578 swap(tr->trace_buffer.buffer, tr->max_buffer.buffer); in update_max_tr()
1580 __update_max_tr(tr, tsk, cpu); in update_max_tr()
1583 arch_spin_unlock(&tr->max_lock); in update_max_tr()
1595 update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu) in update_max_tr_single() argument
1599 if (tr->stop_count) in update_max_tr_single()
1603 if (!tr->allocated_snapshot) { in update_max_tr_single()
1605 WARN_ON_ONCE(tr->current_trace != &nop_trace); in update_max_tr_single()
1609 arch_spin_lock(&tr->max_lock); in update_max_tr_single()
1611 ret = ring_buffer_swap_cpu(tr->max_buffer.buffer, tr->trace_buffer.buffer, cpu); in update_max_tr_single()
1620 trace_array_printk_buf(tr->max_buffer.buffer, _THIS_IP_, in update_max_tr_single()
1626 __update_max_tr(tr, tsk, cpu); in update_max_tr_single()
1627 arch_spin_unlock(&tr->max_lock); in update_max_tr_single()
1666 struct trace_array *tr = &global_trace; in run_tracer_selftest() local
1667 struct tracer *saved_tracer = tr->current_trace; in run_tracer_selftest()
1688 tracing_reset_online_cpus(&tr->trace_buffer); in run_tracer_selftest()
1690 tr->current_trace = type; in run_tracer_selftest()
1696 ring_buffer_resize(tr->max_buffer.buffer, trace_buf_size, in run_tracer_selftest()
1698 tr->allocated_snapshot = true; in run_tracer_selftest()
1704 ret = type->selftest(type, tr); in run_tracer_selftest()
1706 tr->current_trace = saved_tracer; in run_tracer_selftest()
1714 tracing_reset_online_cpus(&tr->trace_buffer); in run_tracer_selftest()
1718 tr->allocated_snapshot = false; in run_tracer_selftest()
1722 ring_buffer_resize(tr->max_buffer.buffer, 1, in run_tracer_selftest()
1782 static void add_tracer_options(struct trace_array *tr, struct tracer *t);
1921 struct trace_array *tr; in tracing_reset_all_online_cpus() local
1923 list_for_each_entry(tr, &ftrace_trace_arrays, list) { in tracing_reset_all_online_cpus()
1924 if (!tr->clear_trace) in tracing_reset_all_online_cpus()
1926 tr->clear_trace = false; in tracing_reset_all_online_cpus()
1927 tracing_reset_online_cpus(&tr->trace_buffer); in tracing_reset_all_online_cpus()
1929 tracing_reset_online_cpus(&tr->max_buffer); in tracing_reset_all_online_cpus()
2052 static void tracing_start_tr(struct trace_array *tr) in tracing_start_tr() argument
2061 if (tr->flags & TRACE_ARRAY_FL_GLOBAL) in tracing_start_tr()
2064 raw_spin_lock_irqsave(&tr->start_lock, flags); in tracing_start_tr()
2066 if (--tr->stop_count) { in tracing_start_tr()
2067 if (tr->stop_count < 0) { in tracing_start_tr()
2070 tr->stop_count = 0; in tracing_start_tr()
2075 buffer = tr->trace_buffer.buffer; in tracing_start_tr()
2080 raw_spin_unlock_irqrestore(&tr->start_lock, flags); in tracing_start_tr()
2117 static void tracing_stop_tr(struct trace_array *tr) in tracing_stop_tr() argument
2123 if (tr->flags & TRACE_ARRAY_FL_GLOBAL) in tracing_stop_tr()
2126 raw_spin_lock_irqsave(&tr->start_lock, flags); in tracing_stop_tr()
2127 if (tr->stop_count++) in tracing_stop_tr()
2130 buffer = tr->trace_buffer.buffer; in tracing_stop_tr()
2135 raw_spin_unlock_irqrestore(&tr->start_lock, flags); in tracing_stop_tr()
2491 *current_rb = trace_file->tr->trace_buffer.buffer; in trace_event_buffer_lock_reserve()
2607 void trace_buffer_unlock_commit_regs(struct trace_array *tr, in trace_buffer_unlock_commit_regs() argument
2621 ftrace_trace_stack(tr, buffer, flags, regs ? 0 : STACK_SKIP, pc, regs); in trace_buffer_unlock_commit_regs()
2759 trace_function(struct trace_array *tr, in trace_function() argument
2764 struct ring_buffer *buffer = tr->trace_buffer.buffer; in trace_function()
2876 static inline void ftrace_trace_stack(struct trace_array *tr, in ftrace_trace_stack() argument
2881 if (!(tr->trace_flags & TRACE_ITER_STACKTRACE)) in ftrace_trace_stack()
2887 void __trace_stack(struct trace_array *tr, unsigned long flags, int skip, in __trace_stack() argument
2890 struct ring_buffer *buffer = tr->trace_buffer.buffer; in __trace_stack()
3108 struct trace_array *tr = &global_trace; in trace_vbprintk() local
3136 buffer = tr->trace_buffer.buffer; in trace_vbprintk()
3148 ftrace_trace_stack(tr, buffer, flags, 6, pc, NULL); in trace_vbprintk()
3218 int trace_array_vprintk(struct trace_array *tr, in trace_array_vprintk() argument
3221 return __trace_array_vprintk(tr->trace_buffer.buffer, ip, fmt, args); in trace_array_vprintk()
3225 int trace_array_printk(struct trace_array *tr, in trace_array_printk() argument
3235 ret = trace_array_vprintk(tr, ip, fmt, ap); in trace_array_printk()
3443 struct trace_array *tr = iter->tr; in s_start() local
3456 if (unlikely(tr->current_trace && iter->trace->name != tr->current_trace->name)) in s_start()
3457 *iter->trace = *tr->current_trace; in s_start()
3556 unsigned long trace_total_entries_cpu(struct trace_array *tr, int cpu) in trace_total_entries_cpu() argument
3560 if (!tr) in trace_total_entries_cpu()
3561 tr = &global_trace; in trace_total_entries_cpu()
3563 get_total_entries_cpu(&tr->trace_buffer, &total, &entries, cpu); in trace_total_entries_cpu()
3568 unsigned long trace_total_entries(struct trace_array *tr) in trace_total_entries() argument
3572 if (!tr) in trace_total_entries()
3573 tr = &global_trace; in trace_total_entries()
3575 get_total_entries(&tr->trace_buffer, &total, &entries); in trace_total_entries()
3697 struct trace_array *tr = iter->tr; in test_cpu_buff_start() local
3699 if (!(tr->trace_flags & TRACE_ITER_ANNOTATE)) in test_cpu_buff_start()
3723 struct trace_array *tr = iter->tr; in print_trace_fmt() local
3725 unsigned long sym_flags = (tr->trace_flags & TRACE_ITER_SYM_MASK); in print_trace_fmt()
3735 if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) { in print_trace_fmt()
3755 struct trace_array *tr = iter->tr; in print_raw_fmt() local
3762 if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) in print_raw_fmt()
3780 struct trace_array *tr = iter->tr; in print_hex_fmt() local
3788 if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) { in print_hex_fmt()
3810 struct trace_array *tr = iter->tr; in print_bin_fmt() local
3817 if (tr->trace_flags & TRACE_ITER_CONTEXT_INFO) { in print_bin_fmt()
3866 struct trace_array *tr = iter->tr; in print_trace_line() local
3867 unsigned long trace_flags = tr->trace_flags; in print_trace_line()
3913 struct trace_array *tr = iter->tr; in trace_latency_header() local
3922 if (!(tr->trace_flags & TRACE_ITER_VERBOSE)) in trace_latency_header()
3929 struct trace_array *tr = iter->tr; in trace_default_header() local
3930 unsigned long trace_flags = tr->trace_flags; in trace_default_header()
3990 if (iter->tr->allocated_snapshot) in print_snapshot_help()
4012 if (iter->tr) { in s_show()
4071 struct trace_array *tr = inode->i_private; in __tracing_open() local
4096 *iter->trace = *tr->current_trace; in __tracing_open()
4101 iter->tr = tr; in __tracing_open()
4105 if (tr->current_trace->print_max || snapshot) in __tracing_open()
4106 iter->trace_buffer = &tr->max_buffer; in __tracing_open()
4109 iter->trace_buffer = &tr->trace_buffer; in __tracing_open()
4124 if (trace_clocks[tr->clock_id].in_ns) in __tracing_open()
4129 tracing_stop_tr(tr); in __tracing_open()
4188 struct trace_array *tr = inode->i_private; in tracing_open_generic_tr() local
4191 ret = tracing_check_open_get_tr(tr); in tracing_open_generic_tr()
4202 struct trace_array *tr = inode->i_private; in tracing_release() local
4208 trace_array_put(tr); in tracing_release()
4226 tracing_start_tr(tr); in tracing_release()
4228 __trace_array_put(tr); in tracing_release()
4243 struct trace_array *tr = inode->i_private; in tracing_release_generic_tr() local
4245 trace_array_put(tr); in tracing_release_generic_tr()
4251 struct trace_array *tr = inode->i_private; in tracing_single_release_tr() local
4253 trace_array_put(tr); in tracing_single_release_tr()
4260 struct trace_array *tr = inode->i_private; in tracing_open() local
4264 ret = tracing_check_open_get_tr(tr); in tracing_open()
4271 struct trace_buffer *trace_buf = &tr->trace_buffer; in tracing_open()
4274 if (tr->current_trace->print_max) in tracing_open()
4275 trace_buf = &tr->max_buffer; in tracing_open()
4288 else if (tr->trace_flags & TRACE_ITER_LATENCY_FMT) in tracing_open()
4293 trace_array_put(tr); in tracing_open()
4304 trace_ok_for_array(struct tracer *t, struct trace_array *tr) in trace_ok_for_array() argument
4306 return (tr->flags & TRACE_ARRAY_FL_GLOBAL) || t->allow_instances; in trace_ok_for_array()
4311 get_tracer_for_array(struct trace_array *tr, struct tracer *t) in get_tracer_for_array() argument
4313 while (t && !trace_ok_for_array(t, tr)) in get_tracer_for_array()
4322 struct trace_array *tr = m->private; in t_next() local
4328 t = get_tracer_for_array(tr, t->next); in t_next()
4335 struct trace_array *tr = m->private; in t_start() local
4341 t = get_tracer_for_array(tr, trace_types); in t_start()
4378 struct trace_array *tr = inode->i_private; in show_traces_open() local
4382 ret = tracing_check_open_get_tr(tr); in show_traces_open()
4388 trace_array_put(tr); in show_traces_open()
4393 m->private = tr; in show_traces_open()
4400 struct trace_array *tr = inode->i_private; in show_traces_release() local
4402 trace_array_put(tr); in show_traces_release()
4444 struct trace_array *tr = file_inode(filp)->i_private; in tracing_cpumask_read() local
4449 cpumask_pr_args(tr->tracing_cpumask)) + 1; in tracing_cpumask_read()
4455 cpumask_pr_args(tr->tracing_cpumask)); in tracing_cpumask_read()
4472 struct trace_array *tr = file_inode(filp)->i_private; in tracing_cpumask_write() local
4484 arch_spin_lock(&tr->max_lock); in tracing_cpumask_write()
4490 if (cpumask_test_cpu(cpu, tr->tracing_cpumask) && in tracing_cpumask_write()
4492 atomic_inc(&per_cpu_ptr(tr->trace_buffer.data, cpu)->disabled); in tracing_cpumask_write()
4493 ring_buffer_record_disable_cpu(tr->trace_buffer.buffer, cpu); in tracing_cpumask_write()
4495 if (!cpumask_test_cpu(cpu, tr->tracing_cpumask) && in tracing_cpumask_write()
4497 atomic_dec(&per_cpu_ptr(tr->trace_buffer.data, cpu)->disabled); in tracing_cpumask_write()
4498 ring_buffer_record_enable_cpu(tr->trace_buffer.buffer, cpu); in tracing_cpumask_write()
4501 arch_spin_unlock(&tr->max_lock); in tracing_cpumask_write()
4504 cpumask_copy(tr->tracing_cpumask, tracing_cpumask_new); in tracing_cpumask_write()
4526 struct trace_array *tr = m->private; in tracing_trace_options_show() local
4531 tracer_flags = tr->current_trace->flags->val; in tracing_trace_options_show()
4532 trace_opts = tr->current_trace->flags->opts; in tracing_trace_options_show()
4535 if (tr->trace_flags & (1 << i)) in tracing_trace_options_show()
4552 static int __set_tracer_option(struct trace_array *tr, in __set_tracer_option() argument
4559 ret = trace->set_flag(tr, tracer_flags->val, opts->bit, !neg); in __set_tracer_option()
4571 static int set_tracer_option(struct trace_array *tr, char *cmp, int neg) in set_tracer_option() argument
4573 struct tracer *trace = tr->current_trace; in set_tracer_option()
4582 return __set_tracer_option(tr, trace->flags, opts, neg); in set_tracer_option()
4597 int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled) in set_tracer_flag() argument
4604 if (!!(tr->trace_flags & mask) == !!enabled) in set_tracer_flag()
4608 if (tr->current_trace->flag_changed) in set_tracer_flag()
4609 if (tr->current_trace->flag_changed(tr, mask, !!enabled)) in set_tracer_flag()
4613 tr->trace_flags |= mask; in set_tracer_flag()
4615 tr->trace_flags &= ~mask; in set_tracer_flag()
4626 tr->trace_flags &= ~TRACE_ITER_RECORD_TGID; in set_tracer_flag()
4634 trace_event_follow_fork(tr, enabled); in set_tracer_flag()
4637 ftrace_pid_follow_fork(tr, enabled); in set_tracer_flag()
4640 ring_buffer_change_overwrite(tr->trace_buffer.buffer, enabled); in set_tracer_flag()
4642 ring_buffer_change_overwrite(tr->max_buffer.buffer, enabled); in set_tracer_flag()
4654 static int trace_set_options(struct trace_array *tr, char *option) in trace_set_options() argument
4676 ret = set_tracer_option(tr, cmp, neg); in trace_set_options()
4678 ret = set_tracer_flag(tr, 1 << ret, !neg); in trace_set_options()
4718 struct trace_array *tr = m->private; in tracing_trace_options_write() local
4730 ret = trace_set_options(tr, buf); in tracing_trace_options_write()
4741 struct trace_array *tr = inode->i_private; in tracing_trace_options_open() local
4744 ret = tracing_check_open_get_tr(tr); in tracing_trace_options_open()
4750 trace_array_put(tr); in tracing_trace_options_open()
5435 struct trace_array *tr = filp->private_data; in tracing_set_trace_read() local
5440 r = sprintf(buf, "%s\n", tr->current_trace->name); in tracing_set_trace_read()
5446 int tracer_init(struct tracer *t, struct trace_array *tr) in tracer_init() argument
5448 tracing_reset_online_cpus(&tr->trace_buffer); in tracer_init()
5449 return t->init(tr); in tracer_init()
5488 static int __tracing_resize_ring_buffer(struct trace_array *tr, in __tracing_resize_ring_buffer() argument
5501 if (!tr->trace_buffer.buffer) in __tracing_resize_ring_buffer()
5504 ret = ring_buffer_resize(tr->trace_buffer.buffer, size, cpu); in __tracing_resize_ring_buffer()
5509 if (!(tr->flags & TRACE_ARRAY_FL_GLOBAL) || in __tracing_resize_ring_buffer()
5510 !tr->current_trace->use_max_tr) in __tracing_resize_ring_buffer()
5513 ret = ring_buffer_resize(tr->max_buffer.buffer, size, cpu); in __tracing_resize_ring_buffer()
5515 int r = resize_buffer_duplicate_size(&tr->trace_buffer, in __tracing_resize_ring_buffer()
5516 &tr->trace_buffer, cpu); in __tracing_resize_ring_buffer()
5539 set_buffer_entries(&tr->max_buffer, size); in __tracing_resize_ring_buffer()
5541 per_cpu_ptr(tr->max_buffer.data, cpu)->entries = size; in __tracing_resize_ring_buffer()
5547 set_buffer_entries(&tr->trace_buffer, size); in __tracing_resize_ring_buffer()
5549 per_cpu_ptr(tr->trace_buffer.data, cpu)->entries = size; in __tracing_resize_ring_buffer()
5554 static ssize_t tracing_resize_ring_buffer(struct trace_array *tr, in tracing_resize_ring_buffer() argument
5569 ret = __tracing_resize_ring_buffer(tr, size, cpu_id); in tracing_resize_ring_buffer()
5606 create_trace_option_files(struct trace_array *tr, struct tracer *tracer);
5612 static void tracing_set_nop(struct trace_array *tr) in tracing_set_nop() argument
5614 if (tr->current_trace == &nop_trace) in tracing_set_nop()
5617 tr->current_trace->enabled--; in tracing_set_nop()
5619 if (tr->current_trace->reset) in tracing_set_nop()
5620 tr->current_trace->reset(tr); in tracing_set_nop()
5622 tr->current_trace = &nop_trace; in tracing_set_nop()
5625 static void add_tracer_options(struct trace_array *tr, struct tracer *t) in add_tracer_options() argument
5628 if (!tr->dir) in add_tracer_options()
5631 create_trace_option_files(tr, t); in add_tracer_options()
5634 static int tracing_set_tracer(struct trace_array *tr, const char *buf) in tracing_set_tracer() argument
5645 ret = __tracing_resize_ring_buffer(tr, trace_buf_size, in tracing_set_tracer()
5660 if (t == tr->current_trace) in tracing_set_tracer()
5665 arch_spin_lock(&tr->max_lock); in tracing_set_tracer()
5666 if (tr->cond_snapshot) in tracing_set_tracer()
5668 arch_spin_unlock(&tr->max_lock); in tracing_set_tracer()
5681 if (!trace_ok_for_array(t, tr)) { in tracing_set_tracer()
5687 if (tr->current_trace->ref) { in tracing_set_tracer()
5694 tr->current_trace->enabled--; in tracing_set_tracer()
5696 if (tr->current_trace->reset) in tracing_set_tracer()
5697 tr->current_trace->reset(tr); in tracing_set_tracer()
5700 tr->current_trace = &nop_trace; in tracing_set_tracer()
5703 had_max_tr = tr->allocated_snapshot; in tracing_set_tracer()
5714 free_snapshot(tr); in tracing_set_tracer()
5720 ret = tracing_alloc_snapshot_instance(tr); in tracing_set_tracer()
5727 ret = tracer_init(t, tr); in tracing_set_tracer()
5732 tr->current_trace = t; in tracing_set_tracer()
5733 tr->current_trace->enabled++; in tracing_set_tracer()
5734 trace_branch_enable(tr); in tracing_set_tracer()
5745 struct trace_array *tr = filp->private_data; in tracing_set_trace_write() local
5765 err = tracing_set_tracer(tr, buf); in tracing_set_trace_write()
5815 struct trace_array *tr = filp->private_data; in tracing_thresh_write() local
5823 if (tr->current_trace->update_thresh) { in tracing_thresh_write()
5824 ret = tr->current_trace->update_thresh(tr); in tracing_thresh_write()
5856 struct trace_array *tr = inode->i_private; in tracing_open_pipe() local
5860 ret = tracing_check_open_get_tr(tr); in tracing_open_pipe()
5870 __trace_array_put(tr); in tracing_open_pipe()
5875 iter->trace = tr->current_trace; in tracing_open_pipe()
5885 if (tr->trace_flags & TRACE_ITER_LATENCY_FMT) in tracing_open_pipe()
5889 if (trace_clocks[tr->clock_id].in_ns) in tracing_open_pipe()
5892 iter->tr = tr; in tracing_open_pipe()
5893 iter->trace_buffer = &tr->trace_buffer; in tracing_open_pipe()
5903 tr->current_trace->ref++; in tracing_open_pipe()
5910 __trace_array_put(tr); in tracing_open_pipe()
5918 struct trace_array *tr = inode->i_private; in tracing_release_pipe() local
5922 tr->current_trace->ref--; in tracing_release_pipe()
5933 trace_array_put(tr); in tracing_release_pipe()
5941 struct trace_array *tr = iter->tr; in trace_poll() local
5947 if (tr->trace_flags & TRACE_ITER_BLOCK) in trace_poll()
5986 if (!tracer_tracing_is_on(iter->tr) && iter->pos) in tracing_wait_pipe()
6252 struct trace_array *tr = inode->i_private; in tracing_entries_read() local
6270 size = per_cpu_ptr(tr->trace_buffer.data, cpu)->entries; in tracing_entries_read()
6271 if (size != per_cpu_ptr(tr->trace_buffer.data, cpu)->entries) { in tracing_entries_read()
6287 r = sprintf(buf, "%lu\n", per_cpu_ptr(tr->trace_buffer.data, cpu)->entries >> 10); in tracing_entries_read()
6300 struct trace_array *tr = inode->i_private; in tracing_entries_write() local
6314 ret = tracing_resize_ring_buffer(tr, val, tracing_get_cpu(inode)); in tracing_entries_write()
6327 struct trace_array *tr = filp->private_data; in tracing_total_entries_read() local
6334 size += per_cpu_ptr(tr->trace_buffer.data, cpu)->entries >> 10; in tracing_total_entries_read()
6364 struct trace_array *tr = inode->i_private; in tracing_free_buffer_release() local
6367 if (tr->trace_flags & TRACE_ITER_STOP_ON_FREE) in tracing_free_buffer_release()
6368 tracer_tracing_off(tr); in tracing_free_buffer_release()
6370 tracing_resize_ring_buffer(tr, 0, RING_BUFFER_ALL_CPUS); in tracing_free_buffer_release()
6372 trace_array_put(tr); in tracing_free_buffer_release()
6381 struct trace_array *tr = filp->private_data; in tracing_mark_write() local
6398 if (!(tr->trace_flags & TRACE_ITER_MARKERS)) in tracing_mark_write()
6413 buffer = tr->trace_buffer.buffer; in tracing_mark_write()
6432 if (tr->trace_marker_file && !list_empty(&tr->trace_marker_file->triggers)) { in tracing_mark_write()
6435 tt = event_triggers_call(tr->trace_marker_file, entry, event); in tracing_mark_write()
6447 event_triggers_post_call(tr->trace_marker_file, tt); in tracing_mark_write()
6462 struct trace_array *tr = filp->private_data; in tracing_mark_raw_write() local
6476 if (!(tr->trace_flags & TRACE_ITER_MARKERS)) in tracing_mark_raw_write()
6493 buffer = tr->trace_buffer.buffer; in tracing_mark_raw_write()
6520 struct trace_array *tr = m->private; in tracing_clock_show() local
6526 i == tr->clock_id ? "[" : "", trace_clocks[i].name, in tracing_clock_show()
6527 i == tr->clock_id ? "]" : ""); in tracing_clock_show()
6533 int tracing_set_clock(struct trace_array *tr, const char *clockstr) in tracing_set_clock() argument
6546 tr->clock_id = i; in tracing_set_clock()
6548 ring_buffer_set_clock(tr->trace_buffer.buffer, trace_clocks[i].func); in tracing_set_clock()
6554 tracing_reset_online_cpus(&tr->trace_buffer); in tracing_set_clock()
6557 if (tr->max_buffer.buffer) in tracing_set_clock()
6558 ring_buffer_set_clock(tr->max_buffer.buffer, trace_clocks[i].func); in tracing_set_clock()
6559 tracing_reset_online_cpus(&tr->max_buffer); in tracing_set_clock()
6571 struct trace_array *tr = m->private; in tracing_clock_write() local
6586 ret = tracing_set_clock(tr, clockstr); in tracing_clock_write()
6597 struct trace_array *tr = inode->i_private; in tracing_clock_open() local
6600 ret = tracing_check_open_get_tr(tr); in tracing_clock_open()
6606 trace_array_put(tr); in tracing_clock_open()
6613 struct trace_array *tr = m->private; in tracing_time_stamp_mode_show() local
6617 if (ring_buffer_time_stamp_abs(tr->trace_buffer.buffer)) in tracing_time_stamp_mode_show()
6629 struct trace_array *tr = inode->i_private; in tracing_time_stamp_mode_open() local
6632 ret = tracing_check_open_get_tr(tr); in tracing_time_stamp_mode_open()
6638 trace_array_put(tr); in tracing_time_stamp_mode_open()
6643 int tracing_set_time_stamp_abs(struct trace_array *tr, bool abs) in tracing_set_time_stamp_abs() argument
6649 if (abs && tr->time_stamp_abs_ref++) in tracing_set_time_stamp_abs()
6653 if (WARN_ON_ONCE(!tr->time_stamp_abs_ref)) { in tracing_set_time_stamp_abs()
6658 if (--tr->time_stamp_abs_ref) in tracing_set_time_stamp_abs()
6662 ring_buffer_set_time_stamp_abs(tr->trace_buffer.buffer, abs); in tracing_set_time_stamp_abs()
6665 if (tr->max_buffer.buffer) in tracing_set_time_stamp_abs()
6666 ring_buffer_set_time_stamp_abs(tr->max_buffer.buffer, abs); in tracing_set_time_stamp_abs()
6684 struct trace_array *tr = inode->i_private; in tracing_snapshot_open() local
6689 ret = tracing_check_open_get_tr(tr); in tracing_snapshot_open()
6710 iter->tr = tr; in tracing_snapshot_open()
6711 iter->trace_buffer = &tr->max_buffer; in tracing_snapshot_open()
6718 trace_array_put(tr); in tracing_snapshot_open()
6729 struct trace_array *tr = iter->tr; in tracing_snapshot_write() local
6743 if (tr->current_trace->use_max_tr) { in tracing_snapshot_write()
6748 arch_spin_lock(&tr->max_lock); in tracing_snapshot_write()
6749 if (tr->cond_snapshot) in tracing_snapshot_write()
6751 arch_spin_unlock(&tr->max_lock); in tracing_snapshot_write()
6761 if (tr->allocated_snapshot) in tracing_snapshot_write()
6762 free_snapshot(tr); in tracing_snapshot_write()
6772 if (tr->allocated_snapshot) in tracing_snapshot_write()
6773 ret = resize_buffer_duplicate_size(&tr->max_buffer, in tracing_snapshot_write()
6774 &tr->trace_buffer, iter->cpu_file); in tracing_snapshot_write()
6776 ret = tracing_alloc_snapshot_instance(tr); in tracing_snapshot_write()
6782 update_max_tr(tr, current, smp_processor_id(), NULL); in tracing_snapshot_write()
6784 update_max_tr_single(tr, current, iter->cpu_file); in tracing_snapshot_write()
6788 if (tr->allocated_snapshot) { in tracing_snapshot_write()
6790 tracing_reset_online_cpus(&tr->max_buffer); in tracing_snapshot_write()
6792 tracing_reset_cpu(&tr->max_buffer, iter->cpu_file); in tracing_snapshot_write()
6849 info->iter.trace_buffer = &info->iter.tr->max_buffer; in snapshot_raw_open()
6979 static struct tracing_log_err *get_tracing_log_err(struct trace_array *tr) in get_tracing_log_err() argument
6983 if (tr->n_err_log_entries < TRACING_LOG_ERRS_MAX) { in get_tracing_log_err()
6987 tr->n_err_log_entries++; in get_tracing_log_err()
6992 err = list_first_entry(&tr->err_log, struct tracing_log_err, list); in get_tracing_log_err()
7051 void tracing_log_err(struct trace_array *tr, in tracing_log_err() argument
7057 if (!tr) in tracing_log_err()
7058 tr = &global_trace; in tracing_log_err()
7061 err = get_tracing_log_err(tr); in tracing_log_err()
7075 list_add_tail(&err->list, &tr->err_log); in tracing_log_err()
7079 static void clear_tracing_err_log(struct trace_array *tr) in clear_tracing_err_log() argument
7084 list_for_each_entry_safe(err, next, &tr->err_log, list) { in clear_tracing_err_log()
7089 tr->n_err_log_entries = 0; in clear_tracing_err_log()
7095 struct trace_array *tr = m->private; in tracing_err_log_seq_start() local
7099 return seq_list_start(&tr->err_log, *pos); in tracing_err_log_seq_start()
7104 struct trace_array *tr = m->private; in tracing_err_log_seq_next() local
7106 return seq_list_next(v, &tr->err_log, pos); in tracing_err_log_seq_next()
7153 struct trace_array *tr = inode->i_private; in tracing_err_log_open() local
7156 ret = tracing_check_open_get_tr(tr); in tracing_err_log_open()
7162 clear_tracing_err_log(tr); in tracing_err_log_open()
7168 m->private = tr; in tracing_err_log_open()
7170 trace_array_put(tr); in tracing_err_log_open()
7185 struct trace_array *tr = inode->i_private; in tracing_err_log_release() local
7187 trace_array_put(tr); in tracing_err_log_release()
7205 struct trace_array *tr = inode->i_private; in tracing_buffers_open() local
7209 ret = tracing_check_open_get_tr(tr); in tracing_buffers_open()
7215 trace_array_put(tr); in tracing_buffers_open()
7221 info->iter.tr = tr; in tracing_buffers_open()
7223 info->iter.trace = tr->current_trace; in tracing_buffers_open()
7224 info->iter.trace_buffer = &tr->trace_buffer; in tracing_buffers_open()
7231 tr->current_trace->ref++; in tracing_buffers_open()
7237 trace_array_put(tr); in tracing_buffers_open()
7264 if (iter->snapshot && iter->tr->current_trace->use_max_tr) in tracing_buffers_read()
7332 iter->tr->current_trace->ref--; in tracing_buffers_release()
7334 __trace_array_put(iter->tr); in tracing_buffers_release()
7424 if (iter->snapshot && iter->tr->current_trace->use_max_tr) in tracing_buffers_splice_read()
7498 ret = wait_on_pipe(iter, iter->tr->buffer_percent); in tracing_buffers_splice_read()
7526 struct trace_array *tr = inode->i_private; in tracing_stats_read() local
7527 struct trace_buffer *trace_buf = &tr->trace_buffer; in tracing_stats_read()
7552 if (trace_clocks[tr->clock_id].in_ns) { in tracing_stats_read()
7618 struct trace_array *tr, struct ftrace_probe_ops *ops, in ftrace_snapshot() argument
7621 tracing_snapshot_instance(tr); in ftrace_snapshot()
7626 struct trace_array *tr, struct ftrace_probe_ops *ops, in ftrace_count_snapshot() argument
7643 tracing_snapshot_instance(tr); in ftrace_count_snapshot()
7669 ftrace_snapshot_init(struct ftrace_probe_ops *ops, struct trace_array *tr, in ftrace_snapshot_init() argument
7685 ftrace_snapshot_free(struct ftrace_probe_ops *ops, struct trace_array *tr, in ftrace_snapshot_free() argument
7713 ftrace_trace_snapshot_callback(struct trace_array *tr, struct ftrace_hash *hash, in ftrace_trace_snapshot_callback() argument
7721 if (!tr) in ftrace_trace_snapshot_callback()
7731 return unregister_ftrace_function_probe_func(glob+1, tr, ops); in ftrace_trace_snapshot_callback()
7750 ret = tracing_alloc_snapshot_instance(tr); in ftrace_trace_snapshot_callback()
7754 ret = register_ftrace_function_probe(glob, tr, ops, count); in ftrace_trace_snapshot_callback()
7773 static struct dentry *tracing_get_dentry(struct trace_array *tr) in tracing_get_dentry() argument
7775 if (WARN_ON(!tr->dir)) in tracing_get_dentry()
7779 if (tr->flags & TRACE_ARRAY_FL_GLOBAL) in tracing_get_dentry()
7783 return tr->dir; in tracing_get_dentry()
7786 static struct dentry *tracing_dentry_percpu(struct trace_array *tr, int cpu) in tracing_dentry_percpu() argument
7790 if (tr->percpu_dir) in tracing_dentry_percpu()
7791 return tr->percpu_dir; in tracing_dentry_percpu()
7793 d_tracer = tracing_get_dentry(tr); in tracing_dentry_percpu()
7797 tr->percpu_dir = tracefs_create_dir("per_cpu", d_tracer); in tracing_dentry_percpu()
7799 WARN_ONCE(!tr->percpu_dir, in tracing_dentry_percpu()
7802 return tr->percpu_dir; in tracing_dentry_percpu()
7817 tracing_init_tracefs_percpu(struct trace_array *tr, long cpu) in tracing_init_tracefs_percpu() argument
7819 struct dentry *d_percpu = tracing_dentry_percpu(tr, cpu); in tracing_init_tracefs_percpu()
7835 tr, cpu, &tracing_pipe_fops); in tracing_init_tracefs_percpu()
7839 tr, cpu, &tracing_fops); in tracing_init_tracefs_percpu()
7842 tr, cpu, &tracing_buffers_fops); in tracing_init_tracefs_percpu()
7845 tr, cpu, &tracing_stats_fops); in tracing_init_tracefs_percpu()
7848 tr, cpu, &tracing_entries_fops); in tracing_init_tracefs_percpu()
7852 tr, cpu, &snapshot_fops); in tracing_init_tracefs_percpu()
7855 tr, cpu, &snapshot_raw_fops); in tracing_init_tracefs_percpu()
7896 ret = __set_tracer_option(topt->tr, topt->flags, in trace_options_write()
7954 struct trace_array *tr; in trace_options_core_read() local
7958 get_tr_index(tr_index, &tr, &index); in trace_options_core_read()
7960 if (tr->trace_flags & (1 << index)) in trace_options_core_read()
7973 struct trace_array *tr; in trace_options_core_write() local
7978 get_tr_index(tr_index, &tr, &index); in trace_options_core_write()
7989 ret = set_tracer_flag(tr, 1 << index, val); in trace_options_core_write()
8024 static struct dentry *trace_options_init_dentry(struct trace_array *tr) in trace_options_init_dentry() argument
8028 if (tr->options) in trace_options_init_dentry()
8029 return tr->options; in trace_options_init_dentry()
8031 d_tracer = tracing_get_dentry(tr); in trace_options_init_dentry()
8035 tr->options = tracefs_create_dir("options", d_tracer); in trace_options_init_dentry()
8036 if (!tr->options) { in trace_options_init_dentry()
8041 return tr->options; in trace_options_init_dentry()
8045 create_trace_option_file(struct trace_array *tr, in create_trace_option_file() argument
8052 t_options = trace_options_init_dentry(tr); in create_trace_option_file()
8058 topt->tr = tr; in create_trace_option_file()
8066 create_trace_option_files(struct trace_array *tr, struct tracer *tracer) in create_trace_option_files() argument
8087 if (!trace_ok_for_array(tracer, tr)) in create_trace_option_files()
8090 for (i = 0; i < tr->nr_topts; i++) { in create_trace_option_files()
8092 if (WARN_ON_ONCE(tr->topts[i].tracer->flags == tracer->flags)) in create_trace_option_files()
8105 tr_topts = krealloc(tr->topts, sizeof(*tr->topts) * (tr->nr_topts + 1), in create_trace_option_files()
8112 tr->topts = tr_topts; in create_trace_option_files()
8113 tr->topts[tr->nr_topts].tracer = tracer; in create_trace_option_files()
8114 tr->topts[tr->nr_topts].topts = topts; in create_trace_option_files()
8115 tr->nr_topts++; in create_trace_option_files()
8118 create_trace_option_file(tr, &topts[cnt], flags, in create_trace_option_files()
8127 create_trace_option_core_file(struct trace_array *tr, in create_trace_option_core_file() argument
8132 t_options = trace_options_init_dentry(tr); in create_trace_option_core_file()
8137 (void *)&tr->trace_flags_index[index], in create_trace_option_core_file()
8141 static void create_trace_options_dir(struct trace_array *tr) in create_trace_options_dir() argument
8144 bool top_level = tr == &global_trace; in create_trace_options_dir()
8147 t_options = trace_options_init_dentry(tr); in create_trace_options_dir()
8154 create_trace_option_core_file(tr, trace_options[i], i); in create_trace_options_dir()
8162 struct trace_array *tr = filp->private_data; in rb_simple_read() local
8166 r = tracer_tracing_is_on(tr); in rb_simple_read()
8176 struct trace_array *tr = filp->private_data; in rb_simple_write() local
8177 struct ring_buffer *buffer = tr->trace_buffer.buffer; in rb_simple_write()
8187 if (!!val == tracer_tracing_is_on(tr)) { in rb_simple_write()
8190 tracer_tracing_on(tr); in rb_simple_write()
8191 if (tr->current_trace->start) in rb_simple_write()
8192 tr->current_trace->start(tr); in rb_simple_write()
8194 tracer_tracing_off(tr); in rb_simple_write()
8195 if (tr->current_trace->stop) in rb_simple_write()
8196 tr->current_trace->stop(tr); in rb_simple_write()
8218 struct trace_array *tr = filp->private_data; in buffer_percent_read() local
8222 r = tr->buffer_percent; in buffer_percent_read()
8232 struct trace_array *tr = filp->private_data; in buffer_percent_write() local
8246 tr->buffer_percent = val; in buffer_percent_write()
8264 init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer);
8267 allocate_trace_buffer(struct trace_array *tr, struct trace_buffer *buf, int size) in allocate_trace_buffer() argument
8271 rb_flags = tr->trace_flags & TRACE_ITER_OVERWRITE ? RB_FL_OVERWRITE : 0; in allocate_trace_buffer()
8273 buf->tr = tr; in allocate_trace_buffer()
8287 set_buffer_entries(&tr->trace_buffer, in allocate_trace_buffer()
8288 ring_buffer_size(tr->trace_buffer.buffer, 0)); in allocate_trace_buffer()
8293 static int allocate_trace_buffers(struct trace_array *tr, int size) in allocate_trace_buffers() argument
8297 ret = allocate_trace_buffer(tr, &tr->trace_buffer, size); in allocate_trace_buffers()
8302 ret = allocate_trace_buffer(tr, &tr->max_buffer, in allocate_trace_buffers()
8305 ring_buffer_free(tr->trace_buffer.buffer); in allocate_trace_buffers()
8306 tr->trace_buffer.buffer = NULL; in allocate_trace_buffers()
8307 free_percpu(tr->trace_buffer.data); in allocate_trace_buffers()
8308 tr->trace_buffer.data = NULL; in allocate_trace_buffers()
8311 tr->allocated_snapshot = allocate_snapshot; in allocate_trace_buffers()
8332 static void free_trace_buffers(struct trace_array *tr) in free_trace_buffers() argument
8334 if (!tr) in free_trace_buffers()
8337 free_trace_buffer(&tr->trace_buffer); in free_trace_buffers()
8340 free_trace_buffer(&tr->max_buffer); in free_trace_buffers()
8344 static void init_trace_flags_index(struct trace_array *tr) in init_trace_flags_index() argument
8350 tr->trace_flags_index[i] = i; in init_trace_flags_index()
8353 static void __update_tracer_options(struct trace_array *tr) in __update_tracer_options() argument
8358 add_tracer_options(tr, t); in __update_tracer_options()
8361 static void update_tracer_options(struct trace_array *tr) in update_tracer_options() argument
8364 __update_tracer_options(tr); in update_tracer_options()
8370 struct trace_array *tr; in trace_array_create() local
8377 list_for_each_entry(tr, &ftrace_trace_arrays, list) { in trace_array_create()
8378 if (tr->name && strcmp(tr->name, name) == 0) in trace_array_create()
8383 tr = kzalloc(sizeof(*tr), GFP_KERNEL); in trace_array_create()
8384 if (!tr) in trace_array_create()
8387 tr->name = kstrdup(name, GFP_KERNEL); in trace_array_create()
8388 if (!tr->name) in trace_array_create()
8391 if (!alloc_cpumask_var(&tr->tracing_cpumask, GFP_KERNEL)) in trace_array_create()
8394 tr->trace_flags = global_trace.trace_flags & ~ZEROED_TRACE_FLAGS; in trace_array_create()
8396 cpumask_copy(tr->tracing_cpumask, cpu_all_mask); in trace_array_create()
8398 raw_spin_lock_init(&tr->start_lock); in trace_array_create()
8400 tr->max_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED; in trace_array_create()
8402 tr->current_trace = &nop_trace; in trace_array_create()
8404 INIT_LIST_HEAD(&tr->systems); in trace_array_create()
8405 INIT_LIST_HEAD(&tr->events); in trace_array_create()
8406 INIT_LIST_HEAD(&tr->hist_vars); in trace_array_create()
8407 INIT_LIST_HEAD(&tr->err_log); in trace_array_create()
8409 if (allocate_trace_buffers(tr, trace_buf_size) < 0) in trace_array_create()
8412 tr->dir = tracefs_create_dir(name, trace_instance_dir); in trace_array_create()
8413 if (!tr->dir) in trace_array_create()
8416 ret = event_trace_add_tracer(tr->dir, tr); in trace_array_create()
8418 tracefs_remove_recursive(tr->dir); in trace_array_create()
8422 ftrace_init_trace_array(tr); in trace_array_create()
8424 init_tracer_tracefs(tr, tr->dir); in trace_array_create()
8425 init_trace_flags_index(tr); in trace_array_create()
8426 __update_tracer_options(tr); in trace_array_create()
8428 list_add(&tr->list, &ftrace_trace_arrays); in trace_array_create()
8433 return tr; in trace_array_create()
8436 free_trace_buffers(tr); in trace_array_create()
8437 free_cpumask_var(tr->tracing_cpumask); in trace_array_create()
8438 kfree(tr->name); in trace_array_create()
8439 kfree(tr); in trace_array_create()
8454 static int __remove_instance(struct trace_array *tr) in __remove_instance() argument
8458 if (tr->ref || (tr->current_trace && tr->current_trace->ref)) in __remove_instance()
8461 list_del(&tr->list); in __remove_instance()
8466 set_tracer_flag(tr, 1 << i, 0); in __remove_instance()
8469 tracing_set_nop(tr); in __remove_instance()
8470 clear_ftrace_function_probes(tr); in __remove_instance()
8471 event_trace_del_tracer(tr); in __remove_instance()
8472 ftrace_clear_pids(tr); in __remove_instance()
8473 ftrace_destroy_function_files(tr); in __remove_instance()
8474 tracefs_remove_recursive(tr->dir); in __remove_instance()
8475 free_trace_buffers(tr); in __remove_instance()
8477 for (i = 0; i < tr->nr_topts; i++) { in __remove_instance()
8478 kfree(tr->topts[i].topts); in __remove_instance()
8480 kfree(tr->topts); in __remove_instance()
8482 free_cpumask_var(tr->tracing_cpumask); in __remove_instance()
8483 kfree(tr->name); in __remove_instance()
8484 kfree(tr); in __remove_instance()
8485 tr = NULL; in __remove_instance()
8490 int trace_array_destroy(struct trace_array *tr) in trace_array_destroy() argument
8494 if (!tr) in trace_array_destroy()
8500 ret = __remove_instance(tr); in trace_array_destroy()
8511 struct trace_array *tr; in instance_rmdir() local
8518 list_for_each_entry(tr, &ftrace_trace_arrays, list) { in instance_rmdir()
8519 if (tr->name && strcmp(tr->name, name) == 0) { in instance_rmdir()
8520 ret = __remove_instance(tr); in instance_rmdir()
8541 init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer) in init_tracer_tracefs() argument
8547 tr, &show_traces_fops); in init_tracer_tracefs()
8550 tr, &set_tracer_fops); in init_tracer_tracefs()
8553 tr, &tracing_cpumask_fops); in init_tracer_tracefs()
8556 tr, &tracing_iter_fops); in init_tracer_tracefs()
8559 tr, &tracing_fops); in init_tracer_tracefs()
8562 tr, &tracing_pipe_fops); in init_tracer_tracefs()
8565 tr, &tracing_entries_fops); in init_tracer_tracefs()
8568 tr, &tracing_total_entries_fops); in init_tracer_tracefs()
8571 tr, &tracing_free_buffer_fops); in init_tracer_tracefs()
8574 tr, &tracing_mark_fops); in init_tracer_tracefs()
8576 file = __find_event_file(tr, "ftrace", "print"); in init_tracer_tracefs()
8580 tr->trace_marker_file = file; in init_tracer_tracefs()
8583 tr, &tracing_mark_raw_fops); in init_tracer_tracefs()
8585 trace_create_file("trace_clock", 0644, d_tracer, tr, in init_tracer_tracefs()
8589 tr, &rb_simple_fops); in init_tracer_tracefs()
8591 trace_create_file("timestamp_mode", 0444, d_tracer, tr, in init_tracer_tracefs()
8594 tr->buffer_percent = 50; in init_tracer_tracefs()
8597 tr, &buffer_percent_fops); in init_tracer_tracefs()
8599 create_trace_options_dir(tr); in init_tracer_tracefs()
8603 &tr->max_latency, &tracing_max_lat_fops); in init_tracer_tracefs()
8606 if (ftrace_create_function_files(tr, d_tracer)) in init_tracer_tracefs()
8611 tr, &snapshot_fops); in init_tracer_tracefs()
8615 tr, &tracing_err_log_fops); in init_tracer_tracefs()
8618 tracing_init_tracefs_percpu(tr, cpu); in init_tracer_tracefs()
8620 ftrace_init_tracefs(tr, d_tracer); in init_tracer_tracefs()
8654 struct trace_array *tr = &global_trace; in tracing_init_dentry() local
8662 if (tr->dir) in tracing_init_dentry()
8676 tr->dir = debugfs_create_automount("tracing", NULL, in tracing_init_dentry()
8886 iter->tr = &global_trace; in trace_init_global_iter()
8887 iter->trace = iter->tr->current_trace; in trace_init_global_iter()
8899 if (trace_clocks[iter->tr->clock_id].in_ns) in trace_init_global_iter()
8908 struct trace_array *tr = &global_trace; in ftrace_dump() local
8939 old_userobj = tr->trace_flags & TRACE_ITER_SYM_USEROBJ; in ftrace_dump()
8942 tr->trace_flags &= ~TRACE_ITER_SYM_USEROBJ; in ftrace_dump()
9001 tr->trace_flags |= old_userobj; in ftrace_dump()