Linux 2.6.32-rc6
[safe/jmp/linux-2.6] / tools / perf / util / module.h
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
9 struct section {
10         struct rb_node  rb_node;
11         u64             hash;
12         u64             vma;
13         char            *name;
14         char            *path;
15 };
16
17 struct 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
24 struct 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
33 struct 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
40 struct sec_dso *sec_dso__new_dso(const char *name);
41 void sec_dso__delete_sections(struct sec_dso *self);
42 void sec_dso__delete_self(struct sec_dso *self);
43 size_t sec_dso__fprintf(struct sec_dso *self, FILE *fp);
44 struct section *sec_dso__find_section(struct sec_dso *self, const char *name);
45
46 struct mod_dso *mod_dso__new_dso(const char *name);
47 void mod_dso__delete_modules(struct mod_dso *self);
48 void mod_dso__delete_self(struct mod_dso *self);
49 size_t mod_dso__fprintf(struct mod_dso *self, FILE *fp);
50 struct module *mod_dso__find_module(struct mod_dso *self, const char *name);
51 int mod_dso__load_modules(struct mod_dso *dso);
52
53 #endif /* _PERF_MODULE_ */