| #ifndef _PERF_MODULE_ |
| #define _PERF_MODULE_ 1 |
| |
| #include <linux/types.h> |
| #include "../types.h" |
| #include <linux/list.h> |
| #include <linux/rbtree.h> |
| |
| struct section { |
| struct rb_node rb_node; |
| u64 hash; |
| u64 vma; |
| char *name; |
| char *path; |
| }; |
| |
| struct sec_dso { |
| struct list_head node; |
| struct rb_root secs; |
| struct section *(*find_section)(struct sec_dso *, const char *name); |
| char name[0]; |
| }; |
| |
| struct module { |
| struct rb_node rb_node; |
| u64 hash; |
| char *name; |
| char *path; |
| struct sec_dso *sections; |
| int active; |
| }; |
| |
| struct mod_dso { |
| struct list_head node; |
| struct rb_root mods; |
| struct module *(*find_module)(struct mod_dso *, const char *name); |
| char name[0]; |
| }; |
| |
| struct sec_dso *sec_dso__new_dso(const char *name); |
| void sec_dso__delete_sections(struct sec_dso *self); |
| void sec_dso__delete_self(struct sec_dso *self); |
| size_t sec_dso__fprintf(struct sec_dso *self, FILE *fp); |
| struct section *sec_dso__find_section(struct sec_dso *self, const char *name); |
| |
| struct mod_dso *mod_dso__new_dso(const char *name); |
| void mod_dso__delete_modules(struct mod_dso *self); |
| void mod_dso__delete_self(struct mod_dso *self); |
| size_t mod_dso__fprintf(struct mod_dso *self, FILE *fp); |
| struct module *mod_dso__find_module(struct mod_dso *self, const char *name); |
| int mod_dso__load_modules(struct mod_dso *dso); |
| |
| #endif /* _PERF_MODULE_ */ |