• Home
  • Raw
  • Download

Lines Matching refs:iter

2445 	struct ftrace_rec_iter *iter = &ftrace_rec_iter;  in ftrace_rec_iter_start()  local
2447 iter->pg = ftrace_pages_start; in ftrace_rec_iter_start()
2448 iter->index = 0; in ftrace_rec_iter_start()
2451 while (iter->pg && !iter->pg->index) in ftrace_rec_iter_start()
2452 iter->pg = iter->pg->next; in ftrace_rec_iter_start()
2454 if (!iter->pg) in ftrace_rec_iter_start()
2457 return iter; in ftrace_rec_iter_start()
2466 struct ftrace_rec_iter *ftrace_rec_iter_next(struct ftrace_rec_iter *iter) in ftrace_rec_iter_next() argument
2468 iter->index++; in ftrace_rec_iter_next()
2470 if (iter->index >= iter->pg->index) { in ftrace_rec_iter_next()
2471 iter->pg = iter->pg->next; in ftrace_rec_iter_next()
2472 iter->index = 0; in ftrace_rec_iter_next()
2475 while (iter->pg && !iter->pg->index) in ftrace_rec_iter_next()
2476 iter->pg = iter->pg->next; in ftrace_rec_iter_next()
2479 if (!iter->pg) in ftrace_rec_iter_next()
2482 return iter; in ftrace_rec_iter_next()
2491 struct dyn_ftrace *ftrace_rec_iter_record(struct ftrace_rec_iter *iter) in ftrace_rec_iter_record() argument
2493 return &iter->pg->records[iter->index]; in ftrace_rec_iter_record()
3071 struct ftrace_iterator *iter = m->private; in t_probe_next() local
3072 struct trace_array *tr = iter->ops->private; in t_probe_next()
3081 iter->pos = *pos; in t_probe_next()
3090 if (!iter->probe) { in t_probe_next()
3092 iter->probe = list_entry(next, struct ftrace_func_probe, list); in t_probe_next()
3095 if (iter->probe_entry) in t_probe_next()
3096 hnd = &iter->probe_entry->hlist; in t_probe_next()
3098 hash = iter->probe->ops.func_hash->filter_hash; in t_probe_next()
3110 if (iter->pidx >= size) { in t_probe_next()
3111 if (iter->probe->list.next == func_probes) in t_probe_next()
3113 next = iter->probe->list.next; in t_probe_next()
3114 iter->probe = list_entry(next, struct ftrace_func_probe, list); in t_probe_next()
3115 hash = iter->probe->ops.func_hash->filter_hash; in t_probe_next()
3117 iter->pidx = 0; in t_probe_next()
3120 hhd = &hash->buckets[iter->pidx]; in t_probe_next()
3123 iter->pidx++; in t_probe_next()
3133 iter->pidx++; in t_probe_next()
3141 iter->probe_entry = hlist_entry(hnd, struct ftrace_func_entry, hlist); in t_probe_next()
3143 return iter; in t_probe_next()
3148 struct ftrace_iterator *iter = m->private; in t_probe_start() local
3152 if (!(iter->flags & FTRACE_ITER_DO_PROBES)) in t_probe_start()
3155 if (iter->mod_pos > *pos) in t_probe_start()
3158 iter->probe = NULL; in t_probe_start()
3159 iter->probe_entry = NULL; in t_probe_start()
3160 iter->pidx = 0; in t_probe_start()
3161 for (l = 0; l <= (*pos - iter->mod_pos); ) { in t_probe_start()
3170 iter->flags |= FTRACE_ITER_PROBE; in t_probe_start()
3172 return iter; in t_probe_start()
3176 t_probe_show(struct seq_file *m, struct ftrace_iterator *iter) in t_probe_show() argument
3182 probe = iter->probe; in t_probe_show()
3183 probe_entry = iter->probe_entry; in t_probe_show()
3202 struct ftrace_iterator *iter = m->private; in t_mod_next() local
3203 struct trace_array *tr = iter->tr; in t_mod_next()
3206 iter->pos = *pos; in t_mod_next()
3208 iter->mod_list = iter->mod_list->next; in t_mod_next()
3210 if (iter->mod_list == &tr->mod_trace || in t_mod_next()
3211 iter->mod_list == &tr->mod_notrace) { in t_mod_next()
3212 iter->flags &= ~FTRACE_ITER_MOD; in t_mod_next()
3216 iter->mod_pos = *pos; in t_mod_next()
3218 return iter; in t_mod_next()
3223 struct ftrace_iterator *iter = m->private; in t_mod_start() local
3227 if (iter->func_pos > *pos) in t_mod_start()
3230 iter->mod_pos = iter->func_pos; in t_mod_start()
3233 if (!iter->tr) in t_mod_start()
3236 for (l = 0; l <= (*pos - iter->func_pos); ) { in t_mod_start()
3242 iter->flags &= ~FTRACE_ITER_MOD; in t_mod_start()
3247 iter->flags |= FTRACE_ITER_MOD; in t_mod_start()
3249 return iter; in t_mod_start()
3253 t_mod_show(struct seq_file *m, struct ftrace_iterator *iter) in t_mod_show() argument
3256 struct trace_array *tr = iter->tr; in t_mod_show()
3258 if (WARN_ON_ONCE(!iter->mod_list) || in t_mod_show()
3259 iter->mod_list == &tr->mod_trace || in t_mod_show()
3260 iter->mod_list == &tr->mod_notrace) in t_mod_show()
3263 ftrace_mod = list_entry(iter->mod_list, struct ftrace_mod_load, list); in t_mod_show()
3278 struct ftrace_iterator *iter = m->private; in t_func_next() local
3284 if (iter->idx >= iter->pg->index) { in t_func_next()
3285 if (iter->pg->next) { in t_func_next()
3286 iter->pg = iter->pg->next; in t_func_next()
3287 iter->idx = 0; in t_func_next()
3291 rec = &iter->pg->records[iter->idx++]; in t_func_next()
3292 if (((iter->flags & (FTRACE_ITER_FILTER | FTRACE_ITER_NOTRACE)) && in t_func_next()
3293 !ftrace_lookup_ip(iter->hash, rec->ip)) || in t_func_next()
3295 ((iter->flags & FTRACE_ITER_ENABLED) && in t_func_next()
3306 iter->pos = iter->func_pos = *pos; in t_func_next()
3307 iter->func = rec; in t_func_next()
3309 return iter; in t_func_next()
3315 struct ftrace_iterator *iter = m->private; in t_next() local
3322 if (iter->flags & FTRACE_ITER_PROBE) in t_next()
3325 if (iter->flags & FTRACE_ITER_MOD) in t_next()
3328 if (iter->flags & FTRACE_ITER_PRINTALL) { in t_next()
3342 static void reset_iter_read(struct ftrace_iterator *iter) in reset_iter_read() argument
3344 iter->pos = 0; in reset_iter_read()
3345 iter->func_pos = 0; in reset_iter_read()
3346 iter->flags &= ~(FTRACE_ITER_PRINTALL | FTRACE_ITER_PROBE | FTRACE_ITER_MOD); in reset_iter_read()
3351 struct ftrace_iterator *iter = m->private; in t_start() local
3363 if (*pos < iter->pos) in t_start()
3364 reset_iter_read(iter); in t_start()
3371 if ((iter->flags & (FTRACE_ITER_FILTER | FTRACE_ITER_NOTRACE)) && in t_start()
3372 ftrace_hash_empty(iter->hash)) { in t_start()
3373 iter->func_pos = 1; /* Account for the message */ in t_start()
3376 iter->flags |= FTRACE_ITER_PRINTALL; in t_start()
3378 iter->flags &= ~FTRACE_ITER_PROBE; in t_start()
3379 return iter; in t_start()
3382 if (iter->flags & FTRACE_ITER_MOD) in t_start()
3390 iter->pg = ftrace_pages_start; in t_start()
3391 iter->idx = 0; in t_start()
3401 return iter; in t_start()
3427 struct ftrace_iterator *iter = m->private; in t_show() local
3430 if (iter->flags & FTRACE_ITER_PROBE) in t_show()
3431 return t_probe_show(m, iter); in t_show()
3433 if (iter->flags & FTRACE_ITER_MOD) in t_show()
3434 return t_mod_show(m, iter); in t_show()
3436 if (iter->flags & FTRACE_ITER_PRINTALL) { in t_show()
3437 if (iter->flags & FTRACE_ITER_NOTRACE) in t_show()
3444 rec = iter->func; in t_show()
3450 if (iter->flags & FTRACE_ITER_ENABLED) { in t_show()
3489 struct ftrace_iterator *iter; in ftrace_avail_open() local
3499 iter = __seq_open_private(file, &show_ftrace_seq_ops, sizeof(*iter)); in ftrace_avail_open()
3500 if (!iter) in ftrace_avail_open()
3503 iter->pg = ftrace_pages_start; in ftrace_avail_open()
3504 iter->ops = &global_ops; in ftrace_avail_open()
3512 struct ftrace_iterator *iter; in ftrace_enabled_open() local
3523 iter = __seq_open_private(file, &show_ftrace_seq_ops, sizeof(*iter)); in ftrace_enabled_open()
3524 if (!iter) in ftrace_enabled_open()
3527 iter->pg = ftrace_pages_start; in ftrace_enabled_open()
3528 iter->flags = FTRACE_ITER_ENABLED; in ftrace_enabled_open()
3529 iter->ops = &global_ops; in ftrace_enabled_open()
3554 struct ftrace_iterator *iter; in ftrace_regex_open() local
3568 iter = kzalloc(sizeof(*iter), GFP_KERNEL); in ftrace_regex_open()
3569 if (!iter) in ftrace_regex_open()
3572 if (trace_parser_get_init(&iter->parser, FTRACE_BUFF_MAX)) in ftrace_regex_open()
3575 iter->ops = ops; in ftrace_regex_open()
3576 iter->flags = flag; in ftrace_regex_open()
3577 iter->tr = tr; in ftrace_regex_open()
3589 iter->mod_list = mod_head; in ftrace_regex_open()
3595 iter->hash = alloc_ftrace_hash(size_bits); in ftrace_regex_open()
3598 iter->hash = alloc_and_copy_ftrace_hash(size_bits, hash); in ftrace_regex_open()
3601 if (!iter->hash) { in ftrace_regex_open()
3602 trace_parser_put(&iter->parser); in ftrace_regex_open()
3606 iter->hash = hash; in ftrace_regex_open()
3611 iter->pg = ftrace_pages_start; in ftrace_regex_open()
3616 m->private = iter; in ftrace_regex_open()
3619 free_ftrace_hash(iter->hash); in ftrace_regex_open()
3620 trace_parser_put(&iter->parser); in ftrace_regex_open()
3623 file->private_data = iter; in ftrace_regex_open()
3630 kfree(iter); in ftrace_regex_open()
4638 static int ftrace_process_regex(struct ftrace_iterator *iter, in ftrace_process_regex() argument
4641 struct ftrace_hash *hash = iter->hash; in ftrace_process_regex()
4642 struct trace_array *tr = iter->ops->private; in ftrace_process_regex()
4679 struct ftrace_iterator *iter; in ftrace_regex_write() local
4688 iter = m->private; in ftrace_regex_write()
4690 iter = file->private_data; in ftrace_regex_write()
4697 parser = &iter->parser; in ftrace_regex_write()
4702 ret = ftrace_process_regex(iter, parser->buffer, in ftrace_regex_write()
5022 struct ftrace_iterator *iter; in ftrace_regex_release() local
5029 iter = m->private; in ftrace_regex_release()
5032 iter = file->private_data; in ftrace_regex_release()
5034 parser = &iter->parser; in ftrace_regex_release()
5036 ftrace_match_records(iter->hash, parser->buffer, parser->idx); in ftrace_regex_release()
5041 mutex_lock(&iter->ops->func_hash->regex_lock); in ftrace_regex_release()
5044 filter_hash = !!(iter->flags & FTRACE_ITER_FILTER); in ftrace_regex_release()
5047 orig_hash = &iter->ops->func_hash->filter_hash; in ftrace_regex_release()
5048 if (iter->tr && !list_empty(&iter->tr->mod_trace)) in ftrace_regex_release()
5049 iter->hash->flags |= FTRACE_HASH_FL_MOD; in ftrace_regex_release()
5051 orig_hash = &iter->ops->func_hash->notrace_hash; in ftrace_regex_release()
5054 ret = ftrace_hash_move_and_update_ops(iter->ops, orig_hash, in ftrace_regex_release()
5055 iter->hash, filter_hash); in ftrace_regex_release()
5059 iter->hash = NULL; in ftrace_regex_release()
5062 mutex_unlock(&iter->ops->func_hash->regex_lock); in ftrace_regex_release()
5063 free_ftrace_hash(iter->hash); in ftrace_regex_release()
5064 if (iter->tr) in ftrace_regex_release()
5065 trace_array_put(iter->tr); in ftrace_regex_release()
5066 kfree(iter); in ftrace_regex_release()