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/builtin-annotate.c | |
| 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/builtin-annotate.c')
| -rw-r--r-- | tools/perf/builtin-annotate.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index 8688bfee42ab..77d50a6d6802 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c | |||
| @@ -55,11 +55,11 @@ struct sym_priv { | |||
| 55 | 55 | ||
| 56 | static const char *sym_hist_filter; | 56 | static const char *sym_hist_filter; |
| 57 | 57 | ||
| 58 | static int symbol_filter(struct map *map, struct symbol *sym) | 58 | static int symbol_filter(struct map *map __used, struct symbol *sym) |
| 59 | { | 59 | { |
| 60 | if (sym_hist_filter == NULL || | 60 | if (sym_hist_filter == NULL || |
| 61 | strcmp(sym->name, sym_hist_filter) == 0) { | 61 | strcmp(sym->name, sym_hist_filter) == 0) { |
| 62 | struct sym_priv *priv = dso__sym_priv(map->dso, sym); | 62 | struct sym_priv *priv = symbol__priv(sym); |
| 63 | const int size = (sizeof(*priv->hist) + | 63 | const int size = (sizeof(*priv->hist) + |
| 64 | (sym->end - sym->start) * sizeof(u64)); | 64 | (sym->end - sym->start) * sizeof(u64)); |
| 65 | 65 | ||
| @@ -92,7 +92,7 @@ static void hist_hit(struct hist_entry *he, u64 ip) | |||
| 92 | if (!sym || !he->map) | 92 | if (!sym || !he->map) |
| 93 | return; | 93 | return; |
| 94 | 94 | ||
| 95 | priv = dso__sym_priv(he->map->dso, sym); | 95 | priv = symbol__priv(sym); |
| 96 | if (!priv->hist) | 96 | if (!priv->hist) |
| 97 | return; | 97 | return; |
| 98 | 98 | ||
| @@ -202,8 +202,7 @@ got_map: | |||
| 202 | static int | 202 | static int |
| 203 | process_mmap_event(event_t *event, unsigned long offset, unsigned long head) | 203 | process_mmap_event(event_t *event, unsigned long offset, unsigned long head) |
| 204 | { | 204 | { |
| 205 | struct map *map = map__new(&event->mmap, NULL, 0, | 205 | struct map *map = map__new(&event->mmap, NULL, 0); |
| 206 | sizeof(struct sym_priv)); | ||
| 207 | struct thread *thread = threads__findnew(event->mmap.pid); | 206 | struct thread *thread = threads__findnew(event->mmap.pid); |
| 208 | 207 | ||
| 209 | dump_printf("%p [%p]: PERF_RECORD_MMAP %d: [%p(%p) @ %p]: %s\n", | 208 | dump_printf("%p [%p]: PERF_RECORD_MMAP %d: [%p(%p) @ %p]: %s\n", |
| @@ -355,7 +354,7 @@ static int parse_line(FILE *file, struct hist_entry *he, u64 len) | |||
| 355 | unsigned int hits = 0; | 354 | unsigned int hits = 0; |
| 356 | double percent = 0.0; | 355 | double percent = 0.0; |
| 357 | const char *color; | 356 | const char *color; |
| 358 | struct sym_priv *priv = dso__sym_priv(he->map->dso, sym); | 357 | struct sym_priv *priv = symbol__priv(sym); |
| 359 | struct sym_ext *sym_ext = priv->ext; | 358 | struct sym_ext *sym_ext = priv->ext; |
| 360 | struct sym_hist *h = priv->hist; | 359 | struct sym_hist *h = priv->hist; |
| 361 | 360 | ||
| @@ -422,7 +421,7 @@ static void insert_source_line(struct sym_ext *sym_ext) | |||
| 422 | 421 | ||
| 423 | static void free_source_line(struct hist_entry *he, int len) | 422 | static void free_source_line(struct hist_entry *he, int len) |
| 424 | { | 423 | { |
| 425 | struct sym_priv *priv = dso__sym_priv(he->map->dso, he->sym); | 424 | struct sym_priv *priv = symbol__priv(he->sym); |
| 426 | struct sym_ext *sym_ext = priv->ext; | 425 | struct sym_ext *sym_ext = priv->ext; |
| 427 | int i; | 426 | int i; |
| 428 | 427 | ||
| @@ -446,7 +445,7 @@ get_source_line(struct hist_entry *he, int len, const char *filename) | |||
| 446 | int i; | 445 | int i; |
| 447 | char cmd[PATH_MAX * 2]; | 446 | char cmd[PATH_MAX * 2]; |
| 448 | struct sym_ext *sym_ext; | 447 | struct sym_ext *sym_ext; |
| 449 | struct sym_priv *priv = dso__sym_priv(he->map->dso, sym); | 448 | struct sym_priv *priv = symbol__priv(sym); |
| 450 | struct sym_hist *h = priv->hist; | 449 | struct sym_hist *h = priv->hist; |
| 451 | 450 | ||
| 452 | if (!h->sum) | 451 | if (!h->sum) |
| @@ -589,7 +588,7 @@ static void find_annotations(void) | |||
| 589 | if (he->sym == NULL) | 588 | if (he->sym == NULL) |
| 590 | continue; | 589 | continue; |
| 591 | 590 | ||
| 592 | priv = dso__sym_priv(he->map->dso, he->sym); | 591 | priv = symbol__priv(he->sym); |
| 593 | if (priv->hist == NULL) | 592 | if (priv->hist == NULL) |
| 594 | continue; | 593 | continue; |
| 595 | 594 | ||
| @@ -637,7 +636,7 @@ static int __cmd_annotate(void) | |||
| 637 | exit(0); | 636 | exit(0); |
| 638 | } | 637 | } |
| 639 | 638 | ||
| 640 | if (load_kernel(sizeof(struct sym_priv), symbol_filter) < 0) { | 639 | if (load_kernel(symbol_filter) < 0) { |
| 641 | perror("failed to load kernel symbols"); | 640 | perror("failed to load kernel symbols"); |
| 642 | return EXIT_FAILURE; | 641 | return EXIT_FAILURE; |
| 643 | } | 642 | } |
| @@ -769,7 +768,7 @@ static void setup_sorting(void) | |||
| 769 | 768 | ||
| 770 | int cmd_annotate(int argc, const char **argv, const char *prefix __used) | 769 | int cmd_annotate(int argc, const char **argv, const char *prefix __used) |
| 771 | { | 770 | { |
| 772 | symbol__init(); | 771 | symbol__init(sizeof(struct sym_priv)); |
| 773 | 772 | ||
| 774 | page_size = getpagesize(); | 773 | page_size = getpagesize(); |
| 775 | 774 | ||
