blob: 9e120af9c71f93f026152ed5230ef1bc15329dbf [file] [log] [blame]
Arnaldo Carvalho de Meloa2928c42009-05-28 14:55:04 -03001#ifndef _PERF_SYMBOL_
2#define _PERF_SYMBOL_ 1
3
4#include <linux/types.h>
5#include "list.h"
6#include "rbtree.h"
7
8struct symbol {
9 struct rb_node rb_node;
10 __u64 start;
11 __u64 end;
12 char name[0];
13};
14
15struct dso {
16 struct list_head node;
17 struct rb_root syms;
Arnaldo Carvalho de Melo0085c9542009-05-28 14:55:13 -030018 unsigned int sym_priv_size;
Arnaldo Carvalho de Meloa2928c42009-05-28 14:55:04 -030019 char name[0];
20};
21
Arnaldo Carvalho de Melo0085c9542009-05-28 14:55:13 -030022struct dso *dso__new(const char *name, unsigned int sym_priv_size);
Arnaldo Carvalho de Meloa2928c42009-05-28 14:55:04 -030023void dso__delete(struct dso *self);
24
Arnaldo Carvalho de Melo0085c9542009-05-28 14:55:13 -030025static inline void *dso__sym_priv(struct dso *self, struct symbol *sym)
26{
27 return ((void *)sym) - self->sym_priv_size;
28}
29
Arnaldo Carvalho de Meloa2928c42009-05-28 14:55:04 -030030struct symbol *dso__find_symbol(struct dso *self, uint64_t ip);
31
32int dso__load_kallsyms(struct dso *self);
33int dso__load_vmlinux(struct dso *self, const char *vmlinux);
34int dso__load(struct dso *self);
35
36size_t dso__fprintf(struct dso *self, FILE *fp);
37
38void symbol__init(void);
39#endif /* _PERF_SYMBOL_ */