1#ifndef _PERF_MODULE_ 2#define _PERF_MODULE_ 1 3 4#include <linux/types.h> 5#include "../types.h" 6#include <linux/list.h> 7#include <linux/rbtree.h> 8 9struct section { 10 struct rb_node rb_node; 11 u64 hash; 12 u64 vma; 13 char *name; 14 char *path; 15}; 16 17struct sec_dso { 18 struct list_head node; 19 struct rb_root secs; 20 struct section *(*find_section)(struct sec_dso *, const char *name); 21 char name[0]; 22}; 23 24struct module { 25 struct rb_node rb_node; 26 u64 hash; 27 char *name; 28 char *path; 29 struct sec_dso *sections; 30 int active; 31}; 32 33struct mod_dso { 34 struct list_head node; 35 struct rb_root mods; 36 struct module *(*find_module)(struct mod_dso *, const char *name); 37 char name[0]; 38}; 39 40struct sec_dso *sec_dso__new_dso(const char *name); 41void sec_dso__delete_sections(struct sec_dso *self); 42void sec_dso__delete_self(struct sec_dso *self); 43size_t sec_dso__fprintf(struct sec_dso *self, FILE *fp); 44struct section *sec_dso__find_section(struct sec_dso *self, const char *name); 45 46struct mod_dso *mod_dso__new_dso(const char *name); 47void mod_dso__delete_modules(struct mod_dso *self); 48void mod_dso__delete_self(struct mod_dso *self); 49size_t mod_dso__fprintf(struct mod_dso *self, FILE *fp); 50struct module *mod_dso__find_module(struct mod_dso *self, const char *name); 51int mod_dso__load_modules(struct mod_dso *dso); 52 53#endif /* _PERF_MODULE_ */ 54