perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/
[linux-2.6] / tools / perf / util / symbol.h
1 #ifndef _PERF_SYMBOL_
2 #define _PERF_SYMBOL_ 1
3
4 #include <linux/types.h>
5 #include "list.h"
6 #include "rbtree.h"
7
8 struct symbol {
9         struct rb_node  rb_node;
10         __u64           start;
11         __u64           end;
12         __u64           obj_start;
13         __u64           hist_sum;
14         __u64           *hist;
15         char            name[0];
16 };
17
18 struct dso {
19         struct list_head node;
20         struct rb_root   syms;
21         unsigned int     sym_priv_size;
22         struct symbol    *(*find_symbol)(struct dso *, uint64_t ip);
23         char             name[0];
24 };
25
26 const char *sym_hist_filter;
27
28 typedef int (*symbol_filter_t)(struct dso *self, struct symbol *sym);
29
30 struct dso *dso__new(const char *name, unsigned int sym_priv_size);
31 void dso__delete(struct dso *self);
32
33 static inline void *dso__sym_priv(struct dso *self, struct symbol *sym)
34 {
35         return ((void *)sym) - self->sym_priv_size;
36 }
37
38 struct symbol *dso__find_symbol(struct dso *self, uint64_t ip);
39
40 int dso__load_kernel(struct dso *self, const char *vmlinux,
41                      symbol_filter_t filter, int verbose);
42 int dso__load(struct dso *self, symbol_filter_t filter, int verbose);
43
44 size_t dso__fprintf(struct dso *self, FILE *fp);
45
46 void symbol__init(void);
47 #endif /* _PERF_SYMBOL_ */