aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/symbol.h
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2009-10-30 14:28:24 -0400
committerIngo Molnar <mingo@elte.hu>2009-11-02 10:52:11 -0500
commit00a192b395b0606ad0265243844b3cd68e73420a (patch)
tree09149f550807c365f170c857b1021d66e5bb8b4b /tools/perf/util/symbol.h
parentafb7b4f08e274cecd8337f9444affa288a9cd4c1 (diff)
perf tools: Simplify the symbol priv area mechanism
Before we were storing this in the DSO, but in fact this is a property of the 'symbol' class, not something that will vary among DSOs, so move it to a global variable and initialize it using the existing symbol__init routine. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Mike Galbraith <efault@gmx.de> LKML-Reference: <1256927305-4628-2-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/symbol.h')
-rw-r--r--tools/perf/util/symbol.h24
1 files changed, 12 insertions, 12 deletions
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index 432edbca7806..a471a3840736 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -39,11 +39,17 @@ struct symbol {
39 char name[0]; 39 char name[0];
40}; 40};
41 41
42extern unsigned int symbol__priv_size;
43
44static inline void *symbol__priv(struct symbol *self)
45{
46 return ((void *)self) - symbol__priv_size;
47}
48
42struct dso { 49struct dso {
43 struct list_head node; 50 struct list_head node;
44 struct rb_root syms; 51 struct rb_root syms;
45 struct symbol *(*find_symbol)(struct dso *, u64 ip); 52 struct symbol *(*find_symbol)(struct dso *, u64 ip);
46 unsigned int sym_priv_size;
47 unsigned char adjust_symbols; 53 unsigned char adjust_symbols;
48 unsigned char slen_calculated; 54 unsigned char slen_calculated;
49 bool loaded; 55 bool loaded;
@@ -53,28 +59,22 @@ struct dso {
53 char name[0]; 59 char name[0];
54}; 60};
55 61
56struct dso *dso__new(const char *name, unsigned int sym_priv_size); 62struct dso *dso__new(const char *name);
57void dso__delete(struct dso *self); 63void dso__delete(struct dso *self);
58 64
59static inline void *dso__sym_priv(struct dso *self, struct symbol *sym)
60{
61 return ((void *)sym) - self->sym_priv_size;
62}
63
64struct symbol *dso__find_symbol(struct dso *self, u64 ip); 65struct symbol *dso__find_symbol(struct dso *self, u64 ip);
65 66
66int dsos__load_kernel(const char *vmlinux, unsigned int sym_priv_size, 67int dsos__load_kernel(const char *vmlinux, symbol_filter_t filter, int modules);
67 symbol_filter_t filter, int modules); 68struct dso *dsos__findnew(const char *name);
68struct dso *dsos__findnew(const char *name, unsigned int sym_priv_size);
69int dso__load(struct dso *self, struct map *map, symbol_filter_t filter); 69int dso__load(struct dso *self, struct map *map, symbol_filter_t filter);
70void dsos__fprintf(FILE *fp); 70void dsos__fprintf(FILE *fp);
71 71
72size_t dso__fprintf(struct dso *self, FILE *fp); 72size_t dso__fprintf(struct dso *self, FILE *fp);
73char dso__symtab_origin(const struct dso *self); 73char dso__symtab_origin(const struct dso *self);
74 74
75int load_kernel(unsigned int sym_priv_size, symbol_filter_t filter); 75int load_kernel(symbol_filter_t filter);
76 76
77void symbol__init(void); 77void symbol__init(unsigned int priv_size);
78 78
79extern struct list_head dsos; 79extern struct list_head dsos;
80extern struct map *kernel_map; 80extern struct map *kernel_map;