diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2009-10-30 14:28:24 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-02 10:52:11 -0500 |
commit | 00a192b395b0606ad0265243844b3cd68e73420a (patch) | |
tree | 09149f550807c365f170c857b1021d66e5bb8b4b /tools/perf/util/symbol.h | |
parent | afb7b4f08e274cecd8337f9444affa288a9cd4c1 (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.h | 24 |
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 | ||
42 | extern unsigned int symbol__priv_size; | ||
43 | |||
44 | static inline void *symbol__priv(struct symbol *self) | ||
45 | { | ||
46 | return ((void *)self) - symbol__priv_size; | ||
47 | } | ||
48 | |||
42 | struct dso { | 49 | struct 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 | ||
56 | struct dso *dso__new(const char *name, unsigned int sym_priv_size); | 62 | struct dso *dso__new(const char *name); |
57 | void dso__delete(struct dso *self); | 63 | void dso__delete(struct dso *self); |
58 | 64 | ||
59 | static inline void *dso__sym_priv(struct dso *self, struct symbol *sym) | ||
60 | { | ||
61 | return ((void *)sym) - self->sym_priv_size; | ||
62 | } | ||
63 | |||
64 | struct symbol *dso__find_symbol(struct dso *self, u64 ip); | 65 | struct symbol *dso__find_symbol(struct dso *self, u64 ip); |
65 | 66 | ||
66 | int dsos__load_kernel(const char *vmlinux, unsigned int sym_priv_size, | 67 | int dsos__load_kernel(const char *vmlinux, symbol_filter_t filter, int modules); |
67 | symbol_filter_t filter, int modules); | 68 | struct dso *dsos__findnew(const char *name); |
68 | struct dso *dsos__findnew(const char *name, unsigned int sym_priv_size); | ||
69 | int dso__load(struct dso *self, struct map *map, symbol_filter_t filter); | 69 | int dso__load(struct dso *self, struct map *map, symbol_filter_t filter); |
70 | void dsos__fprintf(FILE *fp); | 70 | void dsos__fprintf(FILE *fp); |
71 | 71 | ||
72 | size_t dso__fprintf(struct dso *self, FILE *fp); | 72 | size_t dso__fprintf(struct dso *self, FILE *fp); |
73 | char dso__symtab_origin(const struct dso *self); | 73 | char dso__symtab_origin(const struct dso *self); |
74 | 74 | ||
75 | int load_kernel(unsigned int sym_priv_size, symbol_filter_t filter); | 75 | int load_kernel(symbol_filter_t filter); |
76 | 76 | ||
77 | void symbol__init(void); | 77 | void symbol__init(unsigned int priv_size); |
78 | 78 | ||
79 | extern struct list_head dsos; | 79 | extern struct list_head dsos; |
80 | extern struct map *kernel_map; | 80 | extern struct map *kernel_map; |