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