blob: db2fdf9f70a20eff869ad9126328e82133f099a3 [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
Arnaldo Carvalho de Meloa827c872009-05-28 14:55:19 -030032int dso__load_kernel(struct dso *self, const char *vmlinux);
Arnaldo Carvalho de Meloa2928c42009-05-28 14:55:04 -030033int dso__load(struct dso *self);
34
35size_t dso__fprintf(struct dso *self, FILE *fp);
36
37void symbol__init(void);
38#endif /* _PERF_SYMBOL_ */