Lines Matching defs:ksyms
27 struct ksyms {
33 static struct ksyms *ksyms;
36 static int ksyms__add_symbol(struct ksyms *ksyms, const char *name,
44 ksyms->syms[ksyms->sym_cnt].addr = addr;
45 ksyms->syms[ksyms->sym_cnt].name = tmp;
46 ksyms->sym_cnt++;
50 void free_kallsyms_local(struct ksyms *ksyms)
54 if (!ksyms)
57 if (!ksyms->syms) {
58 free(ksyms);
62 for (i = 0; i < ksyms->sym_cnt; i++)
63 free(ksyms->syms[i].name);
64 free(ksyms->syms);
65 free(ksyms);
68 static struct ksyms *load_kallsyms_local_common(ksym_cmp_t cmp_cb)
75 struct ksyms *ksyms;
81 ksyms = calloc(1, sizeof(struct ksyms));
82 if (!ksyms) {
93 ret = libbpf_ensure_mem((void **) &ksyms->syms, &ksyms->sym_cap,
94 sizeof(struct ksym), ksyms->sym_cnt + 1);
97 ret = ksyms__add_symbol(ksyms, func, (unsigned long)addr);
102 qsort(ksyms->syms, ksyms->sym_cnt, sizeof(struct ksym), cmp_cb);
103 return ksyms;
107 free_kallsyms_local(ksyms);
116 struct ksyms *load_kallsyms_local(void)
121 struct ksyms *load_kallsyms_custom_local(ksym_cmp_t cmp_cb)
129 if (!ksyms)
130 ksyms = load_kallsyms_local();
132 return ksyms ? 0 : 1;
135 struct ksym *ksym_search_local(struct ksyms *ksyms, long key)
137 int start = 0, end = ksyms->sym_cnt;
141 if (ksyms->sym_cnt <= 0)
147 result = key - ksyms->syms[mid].addr;
153 return &ksyms->syms[mid];
156 if (start >= 1 && ksyms->syms[start - 1].addr < key &&
157 key < ksyms->syms[start].addr)
159 return &ksyms->syms[start - 1];
162 return &ksyms->syms[0];
165 struct ksym *search_kallsyms_custom_local(struct ksyms *ksyms, const void *p,
168 int start = 0, mid, end = ksyms->sym_cnt;
174 ks = &ksyms->syms[mid];
189 if (!ksyms)
191 return ksym_search_local(ksyms, key);
194 long ksym_get_addr_local(struct ksyms *ksyms, const char *name)
198 for (i = 0; i < ksyms->sym_cnt; i++) {
199 if (strcmp(ksyms->syms[i].name, name) == 0)
200 return ksyms->syms[i].addr;
208 if (!ksyms)
210 return ksym_get_addr_local(ksyms, name);
618 struct ksyms *ksyms;
624 ksyms = load_kallsyms_custom_local(load_kallsyms_compare);
625 if (!ksyms)
659 ks = search_kallsyms_custom_local(ksyms, name, search_kallsyms_compare);