Lines Matching refs:iter
2764 struct ftrace_rec_iter *iter = &ftrace_rec_iter; in ftrace_rec_iter_start() local
2766 iter->pg = ftrace_pages_start; in ftrace_rec_iter_start()
2767 iter->index = 0; in ftrace_rec_iter_start()
2770 while (iter->pg && !iter->pg->index) in ftrace_rec_iter_start()
2771 iter->pg = iter->pg->next; in ftrace_rec_iter_start()
2773 if (!iter->pg) in ftrace_rec_iter_start()
2776 return iter; in ftrace_rec_iter_start()
2785 struct ftrace_rec_iter *ftrace_rec_iter_next(struct ftrace_rec_iter *iter) in ftrace_rec_iter_next() argument
2787 iter->index++; in ftrace_rec_iter_next()
2789 if (iter->index >= iter->pg->index) { in ftrace_rec_iter_next()
2790 iter->pg = iter->pg->next; in ftrace_rec_iter_next()
2791 iter->index = 0; in ftrace_rec_iter_next()
2794 while (iter->pg && !iter->pg->index) in ftrace_rec_iter_next()
2795 iter->pg = iter->pg->next; in ftrace_rec_iter_next()
2798 if (!iter->pg) in ftrace_rec_iter_next()
2801 return iter; in ftrace_rec_iter_next()
2810 struct dyn_ftrace *ftrace_rec_iter_record(struct ftrace_rec_iter *iter) in ftrace_rec_iter_record() argument
2812 return &iter->pg->records[iter->index]; in ftrace_rec_iter_record()
3916 struct ftrace_iterator *iter = m->private; in t_probe_next() local
3917 struct trace_array *tr = iter->ops->private; in t_probe_next()
3926 iter->pos = *pos; in t_probe_next()
3935 if (!iter->probe) { in t_probe_next()
3937 iter->probe = list_entry(next, struct ftrace_func_probe, list); in t_probe_next()
3940 if (iter->probe_entry) in t_probe_next()
3941 hnd = &iter->probe_entry->hlist; in t_probe_next()
3943 hash = iter->probe->ops.func_hash->filter_hash; in t_probe_next()
3955 if (iter->pidx >= size) { in t_probe_next()
3956 if (iter->probe->list.next == func_probes) in t_probe_next()
3958 next = iter->probe->list.next; in t_probe_next()
3959 iter->probe = list_entry(next, struct ftrace_func_probe, list); in t_probe_next()
3960 hash = iter->probe->ops.func_hash->filter_hash; in t_probe_next()
3962 iter->pidx = 0; in t_probe_next()
3965 hhd = &hash->buckets[iter->pidx]; in t_probe_next()
3968 iter->pidx++; in t_probe_next()
3978 iter->pidx++; in t_probe_next()
3986 iter->probe_entry = hlist_entry(hnd, struct ftrace_func_entry, hlist); in t_probe_next()
3988 return iter; in t_probe_next()
3993 struct ftrace_iterator *iter = m->private; in t_probe_start() local
3997 if (!(iter->flags & FTRACE_ITER_DO_PROBES)) in t_probe_start()
4000 if (iter->mod_pos > *pos) in t_probe_start()
4003 iter->probe = NULL; in t_probe_start()
4004 iter->probe_entry = NULL; in t_probe_start()
4005 iter->pidx = 0; in t_probe_start()
4006 for (l = 0; l <= (*pos - iter->mod_pos); ) { in t_probe_start()
4015 iter->flags |= FTRACE_ITER_PROBE; in t_probe_start()
4017 return iter; in t_probe_start()
4021 t_probe_show(struct seq_file *m, struct ftrace_iterator *iter) in t_probe_show() argument
4027 probe = iter->probe; in t_probe_show()
4028 probe_entry = iter->probe_entry; in t_probe_show()
4047 struct ftrace_iterator *iter = m->private; in t_mod_next() local
4048 struct trace_array *tr = iter->tr; in t_mod_next()
4051 iter->pos = *pos; in t_mod_next()
4053 iter->mod_list = iter->mod_list->next; in t_mod_next()
4055 if (iter->mod_list == &tr->mod_trace || in t_mod_next()
4056 iter->mod_list == &tr->mod_notrace) { in t_mod_next()
4057 iter->flags &= ~FTRACE_ITER_MOD; in t_mod_next()
4061 iter->mod_pos = *pos; in t_mod_next()
4063 return iter; in t_mod_next()
4068 struct ftrace_iterator *iter = m->private; in t_mod_start() local
4072 if (iter->func_pos > *pos) in t_mod_start()
4075 iter->mod_pos = iter->func_pos; in t_mod_start()
4078 if (!iter->tr) in t_mod_start()
4081 for (l = 0; l <= (*pos - iter->func_pos); ) { in t_mod_start()
4087 iter->flags &= ~FTRACE_ITER_MOD; in t_mod_start()
4092 iter->flags |= FTRACE_ITER_MOD; in t_mod_start()
4094 return iter; in t_mod_start()
4098 t_mod_show(struct seq_file *m, struct ftrace_iterator *iter) in t_mod_show() argument
4101 struct trace_array *tr = iter->tr; in t_mod_show()
4103 if (WARN_ON_ONCE(!iter->mod_list) || in t_mod_show()
4104 iter->mod_list == &tr->mod_trace || in t_mod_show()
4105 iter->mod_list == &tr->mod_notrace) in t_mod_show()
4108 ftrace_mod = list_entry(iter->mod_list, struct ftrace_mod_load, list); in t_mod_show()
4123 struct ftrace_iterator *iter = m->private; in t_func_next() local
4129 if (iter->idx >= iter->pg->index) { in t_func_next()
4130 if (iter->pg->next) { in t_func_next()
4131 iter->pg = iter->pg->next; in t_func_next()
4132 iter->idx = 0; in t_func_next()
4136 rec = &iter->pg->records[iter->idx++]; in t_func_next()
4137 if (((iter->flags & (FTRACE_ITER_FILTER | FTRACE_ITER_NOTRACE)) && in t_func_next()
4138 !ftrace_lookup_ip(iter->hash, rec->ip)) || in t_func_next()
4140 ((iter->flags & FTRACE_ITER_ENABLED) && in t_func_next()
4143 ((iter->flags & FTRACE_ITER_TOUCHED) && in t_func_next()
4154 iter->pos = iter->func_pos = *pos; in t_func_next()
4155 iter->func = rec; in t_func_next()
4157 return iter; in t_func_next()
4163 struct ftrace_iterator *iter = m->private; in t_next() local
4170 if (iter->flags & FTRACE_ITER_PROBE) in t_next()
4173 if (iter->flags & FTRACE_ITER_MOD) in t_next()
4176 if (iter->flags & FTRACE_ITER_PRINTALL) { in t_next()
4190 static void reset_iter_read(struct ftrace_iterator *iter) in reset_iter_read() argument
4192 iter->pos = 0; in reset_iter_read()
4193 iter->func_pos = 0; in reset_iter_read()
4194 iter->flags &= ~(FTRACE_ITER_PRINTALL | FTRACE_ITER_PROBE | FTRACE_ITER_MOD); in reset_iter_read()
4199 struct ftrace_iterator *iter = m->private; in t_start() local
4211 if (*pos < iter->pos) in t_start()
4212 reset_iter_read(iter); in t_start()
4219 if ((iter->flags & (FTRACE_ITER_FILTER | FTRACE_ITER_NOTRACE)) && in t_start()
4220 ftrace_hash_empty(iter->hash)) { in t_start()
4221 iter->func_pos = 1; /* Account for the message */ in t_start()
4224 iter->flags |= FTRACE_ITER_PRINTALL; in t_start()
4226 iter->flags &= ~FTRACE_ITER_PROBE; in t_start()
4227 return iter; in t_start()
4230 if (iter->flags & FTRACE_ITER_MOD) in t_start()
4238 iter->pg = ftrace_pages_start; in t_start()
4239 iter->idx = 0; in t_start()
4249 return iter; in t_start()
4410 struct ftrace_iterator *iter = m->private; in t_show() local
4413 if (iter->flags & FTRACE_ITER_PROBE) in t_show()
4414 return t_probe_show(m, iter); in t_show()
4416 if (iter->flags & FTRACE_ITER_MOD) in t_show()
4417 return t_mod_show(m, iter); in t_show()
4419 if (iter->flags & FTRACE_ITER_PRINTALL) { in t_show()
4420 if (iter->flags & FTRACE_ITER_NOTRACE) in t_show()
4427 rec = iter->func; in t_show()
4432 if (iter->flags & FTRACE_ITER_ADDRS) in t_show()
4442 if (iter->flags & (FTRACE_ITER_ENABLED | FTRACE_ITER_TOUCHED)) { in t_show()
4502 struct ftrace_iterator *iter; in ftrace_avail_open() local
4512 iter = __seq_open_private(file, &show_ftrace_seq_ops, sizeof(*iter)); in ftrace_avail_open()
4513 if (!iter) in ftrace_avail_open()
4516 iter->pg = ftrace_pages_start; in ftrace_avail_open()
4517 iter->ops = &global_ops; in ftrace_avail_open()
4525 struct ftrace_iterator *iter; in ftrace_enabled_open() local
4536 iter = __seq_open_private(file, &show_ftrace_seq_ops, sizeof(*iter)); in ftrace_enabled_open()
4537 if (!iter) in ftrace_enabled_open()
4540 iter->pg = ftrace_pages_start; in ftrace_enabled_open()
4541 iter->flags = FTRACE_ITER_ENABLED; in ftrace_enabled_open()
4542 iter->ops = &global_ops; in ftrace_enabled_open()
4550 struct ftrace_iterator *iter; in ftrace_touched_open() local
4561 iter = __seq_open_private(file, &show_ftrace_seq_ops, sizeof(*iter)); in ftrace_touched_open()
4562 if (!iter) in ftrace_touched_open()
4565 iter->pg = ftrace_pages_start; in ftrace_touched_open()
4566 iter->flags = FTRACE_ITER_TOUCHED; in ftrace_touched_open()
4567 iter->ops = &global_ops; in ftrace_touched_open()
4575 struct ftrace_iterator *iter; in ftrace_avail_addrs_open() local
4585 iter = __seq_open_private(file, &show_ftrace_seq_ops, sizeof(*iter)); in ftrace_avail_addrs_open()
4586 if (!iter) in ftrace_avail_addrs_open()
4589 iter->pg = ftrace_pages_start; in ftrace_avail_addrs_open()
4590 iter->flags = FTRACE_ITER_ADDRS; in ftrace_avail_addrs_open()
4591 iter->ops = &global_ops; in ftrace_avail_addrs_open()
4618 struct ftrace_iterator *iter; in ftrace_regex_open() local
4632 iter = kzalloc(sizeof(*iter), GFP_KERNEL); in ftrace_regex_open()
4633 if (!iter) in ftrace_regex_open()
4636 if (trace_parser_get_init(&iter->parser, FTRACE_BUFF_MAX)) in ftrace_regex_open()
4639 iter->ops = ops; in ftrace_regex_open()
4640 iter->flags = flag; in ftrace_regex_open()
4641 iter->tr = tr; in ftrace_regex_open()
4653 iter->mod_list = mod_head; in ftrace_regex_open()
4659 iter->hash = alloc_ftrace_hash(size_bits); in ftrace_regex_open()
4662 iter->hash = alloc_and_copy_ftrace_hash(size_bits, hash); in ftrace_regex_open()
4665 if (!iter->hash) { in ftrace_regex_open()
4666 trace_parser_put(&iter->parser); in ftrace_regex_open()
4670 iter->hash = hash; in ftrace_regex_open()
4675 iter->pg = ftrace_pages_start; in ftrace_regex_open()
4680 m->private = iter; in ftrace_regex_open()
4683 free_ftrace_hash(iter->hash); in ftrace_regex_open()
4684 trace_parser_put(&iter->parser); in ftrace_regex_open()
4687 file->private_data = iter; in ftrace_regex_open()
4694 kfree(iter); in ftrace_regex_open()
5389 struct ftrace_func_probe *probe = NULL, *iter; in register_ftrace_function_probe() local
5409 list_for_each_entry(iter, &tr->func_probes, list) { in register_ftrace_function_probe()
5410 if (iter->probe_ops == probe_ops) { in register_ftrace_function_probe()
5411 probe = iter; in register_ftrace_function_probe()
5533 struct ftrace_func_probe *probe = NULL, *iter; in unregister_ftrace_function_probe_func() local
5563 list_for_each_entry(iter, &tr->func_probes, list) { in unregister_ftrace_function_probe_func()
5564 if (iter->probe_ops == probe_ops) { in unregister_ftrace_function_probe_func()
5565 probe = iter; in unregister_ftrace_function_probe_func()
5709 static int ftrace_process_regex(struct ftrace_iterator *iter, in ftrace_process_regex() argument
5712 struct ftrace_hash *hash = iter->hash; in ftrace_process_regex()
5713 struct trace_array *tr = iter->ops->private; in ftrace_process_regex()
5747 struct ftrace_iterator *iter; in ftrace_regex_write() local
5756 iter = m->private; in ftrace_regex_write()
5758 iter = file->private_data; in ftrace_regex_write()
5765 parser = &iter->parser; in ftrace_regex_write()
5770 ret = ftrace_process_regex(iter, parser->buffer, in ftrace_regex_write()
6106 struct ftrace_func_entry *entry, *iter; in __modify_ftrace_direct() local
6134 hlist_for_each_entry(iter, &hash->buckets[i], hlist) { in __modify_ftrace_direct()
6135 entry = __ftrace_lookup_ip(direct_functions, iter->ip); in __modify_ftrace_direct()
6505 struct ftrace_iterator *iter; in ftrace_regex_release() local
6511 iter = m->private; in ftrace_regex_release()
6514 iter = file->private_data; in ftrace_regex_release()
6516 parser = &iter->parser; in ftrace_regex_release()
6518 int enable = !(iter->flags & FTRACE_ITER_NOTRACE); in ftrace_regex_release()
6520 ftrace_process_regex(iter, parser->buffer, in ftrace_regex_release()
6526 mutex_lock(&iter->ops->func_hash->regex_lock); in ftrace_regex_release()
6529 filter_hash = !!(iter->flags & FTRACE_ITER_FILTER); in ftrace_regex_release()
6532 orig_hash = &iter->ops->func_hash->filter_hash; in ftrace_regex_release()
6533 if (iter->tr) { in ftrace_regex_release()
6534 if (list_empty(&iter->tr->mod_trace)) in ftrace_regex_release()
6535 iter->hash->flags &= ~FTRACE_HASH_FL_MOD; in ftrace_regex_release()
6537 iter->hash->flags |= FTRACE_HASH_FL_MOD; in ftrace_regex_release()
6540 orig_hash = &iter->ops->func_hash->notrace_hash; in ftrace_regex_release()
6543 ftrace_hash_move_and_update_ops(iter->ops, orig_hash, in ftrace_regex_release()
6544 iter->hash, filter_hash); in ftrace_regex_release()
6548 iter->hash = NULL; in ftrace_regex_release()
6551 mutex_unlock(&iter->ops->func_hash->regex_lock); in ftrace_regex_release()
6552 free_ftrace_hash(iter->hash); in ftrace_regex_release()
6553 if (iter->tr) in ftrace_regex_release()
6554 trace_array_put(iter->tr); in ftrace_regex_release()
6555 kfree(iter); in ftrace_regex_release()