dsos.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __PERF_DSOS
  3. #define __PERF_DSOS
  4. #include <stdbool.h>
  5. #include <stdio.h>
  6. #include <linux/list.h>
  7. #include <linux/rbtree.h>
  8. #include "rwsem.h"
  9. struct dso;
  10. struct dso_id;
  11. /*
  12. * DSOs are put into both a list for fast iteration and rbtree for fast
  13. * long name lookup.
  14. */
  15. struct dsos {
  16. struct list_head head;
  17. struct rb_root root; /* rbtree root sorted by long name */
  18. struct rw_semaphore lock;
  19. };
  20. void __dsos__add(struct dsos *dsos, struct dso *dso);
  21. void dsos__add(struct dsos *dsos, struct dso *dso);
  22. struct dso *__dsos__addnew(struct dsos *dsos, const char *name);
  23. struct dso *__dsos__find(struct dsos *dsos, const char *name, bool cmp_short);
  24. struct dso *dsos__findnew_id(struct dsos *dsos, const char *name, struct dso_id *id);
  25. struct dso *__dsos__findnew_link_by_longname_id(struct rb_root *root, struct dso *dso,
  26. const char *name, struct dso_id *id);
  27. bool __dsos__read_build_ids(struct list_head *head, bool with_hits);
  28. size_t __dsos__fprintf_buildid(struct list_head *head, FILE *fp,
  29. bool (skip)(struct dso *dso, int parm), int parm);
  30. size_t __dsos__fprintf(struct list_head *head, FILE *fp);
  31. #endif /* __PERF_DSOS */