Lines Matching refs:prog_linfo
22 static int dissect_jited_func(struct bpf_prog_linfo *prog_linfo,
37 raw_jited_linfo = prog_linfo->raw_jited_linfo;
42 prog_linfo->jited_linfo_func_idx[0] = 0;
43 nr_jited_func = prog_linfo->nr_jited_func;
44 nr_linfo = prog_linfo->nr_linfo;
49 raw_jited_linfo += prog_linfo->jited_rec_size;
54 prog_linfo->jited_linfo_func_idx[f] = i;
61 prog_linfo->nr_jited_linfo_per_func[f - 1] =
79 prog_linfo->nr_jited_linfo_per_func[nr_jited_func - 1] =
88 void bpf_prog_linfo__free(struct bpf_prog_linfo *prog_linfo)
90 if (!prog_linfo)
93 free(prog_linfo->raw_linfo);
94 free(prog_linfo->raw_jited_linfo);
95 free(prog_linfo->nr_jited_linfo_per_func);
96 free(prog_linfo->jited_linfo_func_idx);
97 free(prog_linfo);
102 struct bpf_prog_linfo *prog_linfo;
119 prog_linfo = calloc(1, sizeof(*prog_linfo));
120 if (!prog_linfo)
124 prog_linfo->nr_linfo = nr_linfo;
125 prog_linfo->rec_size = info->line_info_rec_size;
126 data_sz = (__u64)nr_linfo * prog_linfo->rec_size;
127 prog_linfo->raw_linfo = malloc(data_sz);
128 if (!prog_linfo->raw_linfo)
130 memcpy(prog_linfo->raw_linfo, (void *)(long)info->line_info, data_sz);
141 return prog_linfo;
144 prog_linfo->nr_jited_func = nr_jited_func;
145 prog_linfo->jited_rec_size = info->jited_line_info_rec_size;
146 data_sz = (__u64)nr_linfo * prog_linfo->jited_rec_size;
147 prog_linfo->raw_jited_linfo = malloc(data_sz);
148 if (!prog_linfo->raw_jited_linfo)
150 memcpy(prog_linfo->raw_jited_linfo,
154 prog_linfo->nr_jited_linfo_per_func = malloc(nr_jited_func *
156 if (!prog_linfo->nr_jited_linfo_per_func)
163 prog_linfo->jited_linfo_func_idx = malloc(nr_jited_func *
165 if (!prog_linfo->jited_linfo_func_idx)
168 if (dissect_jited_func(prog_linfo,
173 return prog_linfo;
176 bpf_prog_linfo__free(prog_linfo);
181 bpf_prog_linfo__lfind_addr_func(const struct bpf_prog_linfo *prog_linfo,
188 if (func_idx >= prog_linfo->nr_jited_func)
191 nr_linfo = prog_linfo->nr_jited_linfo_per_func[func_idx];
195 start = prog_linfo->jited_linfo_func_idx[func_idx] + nr_skip;
196 jited_rec_size = prog_linfo->jited_rec_size;
197 raw_jited_linfo = prog_linfo->raw_jited_linfo +
204 rec_size = prog_linfo->rec_size;
205 raw_linfo = prog_linfo->raw_linfo + (start * rec_size);
219 bpf_prog_linfo__lfind(const struct bpf_prog_linfo *prog_linfo,
226 nr_linfo = prog_linfo->nr_linfo;
230 rec_size = prog_linfo->rec_size;
231 raw_linfo = prog_linfo->raw_linfo + (nr_skip * rec_size);