Lines Matching refs:dso

30 		struct dso *dso = dsos->dsos[i];  in dsos__purge()  local
32 dso__set_dsos(dso, NULL); in dsos__purge()
33 dso__put(dso); in dsos__purge()
52 int (*cb)(struct dso *dso, void *data), in __dsos__for_each_dso() argument
56 struct dso *dso = dsos->dsos[i]; in __dsos__for_each_dso() local
59 err = cb(dso, data); in __dsos__for_each_dso()
71 static int dsos__read_build_ids_cb(struct dso *dso, void *data) in dsos__read_build_ids_cb() argument
76 if (args->with_hits && !dso__hit(dso) && !dso__is_vdso(dso)) in dsos__read_build_ids_cb()
78 if (dso__has_build_id(dso)) { in dsos__read_build_ids_cb()
82 nsinfo__mountns_enter(dso__nsinfo(dso), &nsc); in dsos__read_build_ids_cb()
83 if (filename__read_build_id(dso__long_name(dso), dso__bid(dso)) > 0) { in dsos__read_build_ids_cb()
85 dso__set_has_build_id(dso); in dsos__read_build_ids_cb()
86 } else if (errno == ENOENT && dso__nsinfo(dso)) { in dsos__read_build_ids_cb()
87 char *new_name = dso__filename_with_chroot(dso, dso__long_name(dso)); in dsos__read_build_ids_cb()
89 if (new_name && filename__read_build_id(new_name, dso__bid(dso)) > 0) { in dsos__read_build_ids_cb()
91 dso__set_has_build_id(dso); in dsos__read_build_ids_cb()
111 const struct dso *b) in __dso__cmp_long_name()
118 const struct dso *b) in __dso__cmp_short_name()
126 const struct dso *a = *((const struct dso **)va); in dsos__cmp_long_name_id_short_name()
127 const struct dso *b = *((const struct dso **)vb); in dsos__cmp_long_name_id_short_name()
146 const struct dso *dso = *((const struct dso **)vdso); in dsos__cmp_key_long_name_id() local
148 return __dso__cmp_long_name(key->long_name, key->id, dso); in dsos__cmp_key_long_name_id()
156 static struct dso *__dsos__find_by_longname_id(struct dsos *dsos, in __dsos__find_by_longname_id()
165 struct dso **res; in __dsos__find_by_longname_id()
172 struct dso *dso; in __dsos__find_by_longname_id() local
176 dso = __dsos__find_by_longname_id(dsos, name, id, in __dsos__find_by_longname_id()
180 return dso; in __dsos__find_by_longname_id()
182 qsort(dsos->dsos, dsos->cnt, sizeof(struct dso *), in __dsos__find_by_longname_id()
187 res = bsearch(&key, dsos->dsos, dsos->cnt, sizeof(struct dso *), in __dsos__find_by_longname_id()
195 int __dsos__add(struct dsos *dsos, struct dso *dso) in __dsos__add() argument
199 struct dso **temp; in __dsos__add()
203 temp = realloc(dsos->dsos, sizeof(struct dso *) * to_allocate); in __dsos__add()
210 dsos->dsos[dsos->cnt++] = dso__get(dso); in __dsos__add()
217 int cmp = dsos__cmp_long_name_id_short_name(&dsos->dsos[mid], &dso); in __dsos__add()
227 (dsos->cnt - insert) * sizeof(struct dso *)); in __dsos__add()
229 dsos->dsos[insert] = dso__get(dso); in __dsos__add()
231 dso__set_dsos(dso, dsos); in __dsos__add()
235 int dsos__add(struct dsos *dsos, struct dso *dso) in dsos__add() argument
240 ret = __dsos__add(dsos, dso); in dsos__add()
248 struct dso *res;
251 static int dsos__find_id_cb(struct dso *dso, void *data) in dsos__find_id_cb() argument
255 if (__dso__cmp_short_name(args->name, args->id, dso) == 0) { in dsos__find_id_cb()
256 args->res = dso__get(dso); in dsos__find_id_cb()
263 static struct dso *__dsos__find_id(struct dsos *dsos, const char *name, const struct dso_id *id, in __dsos__find_id()
266 struct dso *res; in __dsos__find_id()
282 struct dso *dsos__find(struct dsos *dsos, const char *name, bool cmp_short) in dsos__find()
284 struct dso *res; in dsos__find()
292 static void dso__set_basename(struct dso *dso) in dso__set_basename() argument
297 if (perf_pid_map_tid(dso__long_name(dso), &tid)) { in dso__set_basename()
305 lname = strdup(dso__long_name(dso)); in dso__set_basename()
321 dso__set_short_name(dso, base, true); in dso__set_basename()
324 static struct dso *__dsos__addnew_id(struct dsos *dsos, const char *name, const struct dso_id *id) in __dsos__addnew_id()
326 struct dso *dso = dso__new_id(name, id); in __dsos__addnew_id() local
328 if (dso != NULL) { in __dsos__addnew_id()
334 dso__set_basename(dso); in __dsos__addnew_id()
335 __dsos__add(dsos, dso); in __dsos__addnew_id()
337 return dso; in __dsos__addnew_id()
340 static struct dso *__dsos__findnew_id(struct dsos *dsos, const char *name, const struct dso_id *id) in __dsos__findnew_id()
342 struct dso *dso = __dsos__find_id(dsos, name, id, false, /*write_locked=*/true); in __dsos__findnew_id() local
344 if (dso && dso_id__empty(dso__id(dso)) && !dso_id__empty(id)) in __dsos__findnew_id()
345 __dso__inject_id(dso, id); in __dsos__findnew_id()
347 return dso ? dso : __dsos__addnew_id(dsos, name, id); in __dsos__findnew_id()
350 struct dso *dsos__findnew_id(struct dsos *dsos, const char *name, const struct dso_id *id) in dsos__findnew_id()
352 struct dso *dso; in dsos__findnew_id() local
354 dso = __dsos__findnew_id(dsos, name, id); in dsos__findnew_id()
356 return dso; in dsos__findnew_id()
361 bool (*skip)(struct dso *dso, int parm);
366 static int dsos__fprintf_buildid_cb(struct dso *dso, void *data) in dsos__fprintf_buildid_cb() argument
371 if (args->skip && args->skip(dso, args->parm)) in dsos__fprintf_buildid_cb()
373 build_id__sprintf(dso__bid(dso), sbuild_id); in dsos__fprintf_buildid_cb()
374 args->ret += fprintf(args->fp, "%-40s %s\n", sbuild_id, dso__long_name(dso)); in dsos__fprintf_buildid_cb()
379 bool (*skip)(struct dso *dso, int parm), int parm) in dsos__fprintf_buildid() argument
397 static int dsos__fprintf_cb(struct dso *dso, void *data) in dsos__fprintf_cb() argument
401 args->ret += dso__fprintf(dso, args->fp); in dsos__fprintf_cb()
416 static int dsos__hit_all_cb(struct dso *dso, void *data __maybe_unused) in dsos__hit_all_cb() argument
418 dso__set_hit(dso); in dsos__hit_all_cb()
427 struct dso *dsos__findnew_module_dso(struct dsos *dsos, in dsos__findnew_module_dso()
432 struct dso *dso; in dsos__findnew_module_dso() local
436 dso = __dsos__find_id(dsos, m->name, NULL, /*cmp_short=*/true, /*write_locked=*/true); in dsos__findnew_module_dso()
437 if (dso) { in dsos__findnew_module_dso()
439 return dso; in dsos__findnew_module_dso()
446 dso = dso__new_id(m->name, /*id=*/NULL); in dsos__findnew_module_dso()
447 if (!dso) { in dsos__findnew_module_dso()
451 dso__set_basename(dso); in dsos__findnew_module_dso()
452 dso__set_module_info(dso, m, machine); in dsos__findnew_module_dso()
453 dso__set_long_name(dso, strdup(filename), true); in dsos__findnew_module_dso()
454 dso__set_kernel(dso, DSO_SPACE__KERNEL); in dsos__findnew_module_dso()
455 __dsos__add(dsos, dso); in dsos__findnew_module_dso()
458 return dso; in dsos__findnew_module_dso()
461 static int dsos__find_kernel_dso_cb(struct dso *dso, void *data) in dsos__find_kernel_dso_cb() argument
463 struct dso **res = data; in dsos__find_kernel_dso_cb()
477 if (!dso__kernel(dso) || in dsos__find_kernel_dso_cb()
478 is_kernel_module(dso__long_name(dso), PERF_RECORD_MISC_CPUMODE_UNKNOWN)) in dsos__find_kernel_dso_cb()
481 *res = dso__get(dso); in dsos__find_kernel_dso_cb()
485 struct dso *dsos__find_kernel_dso(struct dsos *dsos) in dsos__find_kernel_dso()
487 struct dso *res = NULL; in dsos__find_kernel_dso()
493 int dsos__for_each_dso(struct dsos *dsos, int (*cb)(struct dso *dso, void *data), void *data) in dsos__for_each_dso() argument