Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __PERF_DSOS
0003 #define __PERF_DSOS
0004 
0005 #include <stdbool.h>
0006 #include <stdio.h>
0007 #include <linux/list.h>
0008 #include <linux/rbtree.h>
0009 #include "rwsem.h"
0010 
0011 struct dso;
0012 struct dso_id;
0013 
0014 /*
0015  * DSOs are put into both a list for fast iteration and rbtree for fast
0016  * long name lookup.
0017  */
0018 struct dsos {
0019     struct list_head    head;
0020     struct rb_root      root;   /* rbtree root sorted by long name */
0021     struct rw_semaphore lock;
0022 };
0023 
0024 void __dsos__add(struct dsos *dsos, struct dso *dso);
0025 void dsos__add(struct dsos *dsos, struct dso *dso);
0026 struct dso *__dsos__addnew(struct dsos *dsos, const char *name);
0027 struct dso *__dsos__find(struct dsos *dsos, const char *name, bool cmp_short);
0028 
0029 struct dso *dsos__findnew_id(struct dsos *dsos, const char *name, struct dso_id *id);
0030  
0031 struct dso *__dsos__findnew_link_by_longname_id(struct rb_root *root, struct dso *dso,
0032                         const char *name, struct dso_id *id);
0033 
0034 bool __dsos__read_build_ids(struct list_head *head, bool with_hits);
0035 
0036 size_t __dsos__fprintf_buildid(struct list_head *head, FILE *fp,
0037                    bool (skip)(struct dso *dso, int parm), int parm);
0038 size_t __dsos__fprintf(struct list_head *head, FILE *fp);
0039 
0040 #endif /* __PERF_DSOS */