Lines Matching refs:iter

608 static int get_ksymbol_mod(struct kallsym_iter *iter)  in get_ksymbol_mod()  argument
610 int ret = module_get_kallsym(iter->pos - kallsyms_num_syms, in get_ksymbol_mod()
611 &iter->value, &iter->type, in get_ksymbol_mod()
612 iter->name, iter->module_name, in get_ksymbol_mod()
613 &iter->exported); in get_ksymbol_mod()
615 iter->pos_mod_end = iter->pos; in get_ksymbol_mod()
627 static int get_ksymbol_ftrace_mod(struct kallsym_iter *iter) in get_ksymbol_ftrace_mod() argument
629 int ret = ftrace_mod_get_kallsym(iter->pos - iter->pos_mod_end, in get_ksymbol_ftrace_mod()
630 &iter->value, &iter->type, in get_ksymbol_ftrace_mod()
631 iter->name, iter->module_name, in get_ksymbol_ftrace_mod()
632 &iter->exported); in get_ksymbol_ftrace_mod()
634 iter->pos_ftrace_mod_end = iter->pos; in get_ksymbol_ftrace_mod()
641 static int get_ksymbol_bpf(struct kallsym_iter *iter) in get_ksymbol_bpf() argument
645 strscpy(iter->module_name, "bpf", MODULE_NAME_LEN); in get_ksymbol_bpf()
646 iter->exported = 0; in get_ksymbol_bpf()
647 ret = bpf_get_kallsym(iter->pos - iter->pos_ftrace_mod_end, in get_ksymbol_bpf()
648 &iter->value, &iter->type, in get_ksymbol_bpf()
649 iter->name); in get_ksymbol_bpf()
651 iter->pos_bpf_end = iter->pos; in get_ksymbol_bpf()
663 static int get_ksymbol_kprobe(struct kallsym_iter *iter) in get_ksymbol_kprobe() argument
665 strscpy(iter->module_name, "__builtin__kprobes", MODULE_NAME_LEN); in get_ksymbol_kprobe()
666 iter->exported = 0; in get_ksymbol_kprobe()
667 return kprobe_get_kallsym(iter->pos - iter->pos_bpf_end, in get_ksymbol_kprobe()
668 &iter->value, &iter->type, in get_ksymbol_kprobe()
669 iter->name) < 0 ? 0 : 1; in get_ksymbol_kprobe()
673 static unsigned long get_ksymbol_core(struct kallsym_iter *iter) in get_ksymbol_core() argument
675 unsigned off = iter->nameoff; in get_ksymbol_core()
677 iter->module_name[0] = '\0'; in get_ksymbol_core()
678 iter->value = kallsyms_sym_address(iter->pos); in get_ksymbol_core()
680 iter->type = kallsyms_get_symbol_type(off); in get_ksymbol_core()
682 off = kallsyms_expand_symbol(off, iter->name, ARRAY_SIZE(iter->name)); in get_ksymbol_core()
684 return off - iter->nameoff; in get_ksymbol_core()
687 static void reset_iter(struct kallsym_iter *iter, loff_t new_pos) in reset_iter() argument
689 iter->name[0] = '\0'; in reset_iter()
690 iter->nameoff = get_symbol_offset(new_pos); in reset_iter()
691 iter->pos = new_pos; in reset_iter()
693 iter->pos_mod_end = 0; in reset_iter()
694 iter->pos_ftrace_mod_end = 0; in reset_iter()
695 iter->pos_bpf_end = 0; in reset_iter()
704 static int update_iter_mod(struct kallsym_iter *iter, loff_t pos) in update_iter_mod() argument
706 iter->pos = pos; in update_iter_mod()
708 if ((!iter->pos_mod_end || iter->pos_mod_end > pos) && in update_iter_mod()
709 get_ksymbol_mod(iter)) in update_iter_mod()
712 if ((!iter->pos_ftrace_mod_end || iter->pos_ftrace_mod_end > pos) && in update_iter_mod()
713 get_ksymbol_ftrace_mod(iter)) in update_iter_mod()
716 if ((!iter->pos_bpf_end || iter->pos_bpf_end > pos) && in update_iter_mod()
717 get_ksymbol_bpf(iter)) in update_iter_mod()
720 return get_ksymbol_kprobe(iter); in update_iter_mod()
724 static int update_iter(struct kallsym_iter *iter, loff_t pos) in update_iter() argument
728 return update_iter_mod(iter, pos); in update_iter()
731 if (pos != iter->pos) in update_iter()
732 reset_iter(iter, pos); in update_iter()
734 iter->nameoff += get_ksymbol_core(iter); in update_iter()
735 iter->pos++; in update_iter()
763 struct kallsym_iter *iter = m->private; in s_show() local
766 if (!iter->name[0]) in s_show()
769 value = iter->show_value ? (void *)iter->value : NULL; in s_show()
771 if (iter->module_name[0]) { in s_show()
778 type = iter->exported ? toupper(iter->type) : in s_show()
779 tolower(iter->type); in s_show()
781 type, iter->name, iter->module_name); in s_show()
784 iter->type, iter->name); in s_show()
840 struct kallsym_iter *iter = priv_data; in bpf_iter_ksym_init() local
842 reset_iter(iter, 0); in bpf_iter_ksym_init()
847 iter->show_value = kallsyms_show_value(current_cred()); in bpf_iter_ksym_init()
891 struct kallsym_iter *iter; in kallsyms_open() local
892 iter = __seq_open_private(file, &kallsyms_op, sizeof(*iter)); in kallsyms_open()
893 if (!iter) in kallsyms_open()
895 reset_iter(iter, 0); in kallsyms_open()
901 iter->show_value = kallsyms_show_value(file->f_cred); in kallsyms_open()