diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-19 17:20:06 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-12-19 17:38:27 -0300 |
commit | cc22e575a6fddbe3183ac14c28e2f792704995c5 (patch) | |
tree | 2ab6533499cfc1e12bcadb0eb7c4cbf51d50ecda /tools/perf/builtin-report.c | |
parent | 8b640cc4c56cee14bfe5cfb4dbb372ac66d5ec6b (diff) | |
download | linux-cc22e575a6fddbe3183ac14c28e2f792704995c5.tar.bz2 |
perf symbols: Add 'machine' member to struct addr_location
The addr_location struct should fully qualify an address, and to do that
it should have in it the machine where the thread was found.
Thus all functions that receive an addr_location now don't need to also
receive a 'machine', those functions just need to access al->machine
instead, just like it does with the other parts of an address location:
al->thread, al->map, etc.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-o51iiee7vyq4r3k362uvuylg@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-report.c')
-rw-r--r-- | tools/perf/builtin-report.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index da156a44cb15..ec7399a84872 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -77,10 +77,10 @@ static int report__config(const char *var, const char *value, void *cb) static int report__resolve_callchain(struct report *rep, struct symbol **parent, struct perf_evsel *evsel, struct addr_location *al, - struct perf_sample *sample, struct machine *machine) + struct perf_sample *sample) { if ((sort__has_parent || symbol_conf.use_callchain) && sample->callchain) { - return machine__resolve_callchain(machine, evsel, al->thread, sample, + return machine__resolve_callchain(al->machine, evsel, al->thread, sample, parent, al, rep->max_stack); } return 0; @@ -95,7 +95,7 @@ static int hist_entry__append_callchain(struct hist_entry *he, struct perf_sampl static int report__add_mem_hist_entry(struct perf_tool *tool, struct addr_location *al, struct perf_sample *sample, struct perf_evsel *evsel, - struct machine *machine, union perf_event *event) + union perf_event *event) { struct report *rep = container_of(tool, struct report, tool); struct symbol *parent = NULL; @@ -103,12 +103,12 @@ static int report__add_mem_hist_entry(struct perf_tool *tool, struct addr_locati struct hist_entry *he; struct mem_info *mi, *mx; uint64_t cost; - int err = report__resolve_callchain(rep, &parent, evsel, al, sample, machine); + int err = report__resolve_callchain(rep, &parent, evsel, al, sample); if (err) return err; - mi = machine__resolve_mem(machine, al->thread, sample, cpumode); + mi = machine__resolve_mem(al->machine, al->thread, sample, cpumode); if (!mi) return -ENOMEM; @@ -148,20 +148,19 @@ out: } static int report__add_branch_hist_entry(struct perf_tool *tool, struct addr_location *al, - struct perf_sample *sample, struct perf_evsel *evsel, - struct machine *machine) + struct perf_sample *sample, struct perf_evsel *evsel) { struct report *rep = container_of(tool, struct report, tool); struct symbol *parent = NULL; unsigned i; struct hist_entry *he; struct branch_info *bi, *bx; - int err = report__resolve_callchain(rep, &parent, evsel, al, sample, machine); + int err = report__resolve_callchain(rep, &parent, evsel, al, sample); if (err) return err; - bi = machine__resolve_bstack(machine, al->thread, + bi = machine__resolve_bstack(al->machine, al->thread, sample->branch_stack); if (!bi) return -ENOMEM; @@ -204,13 +203,12 @@ out: } static int report__add_hist_entry(struct perf_tool *tool, struct perf_evsel *evsel, - struct addr_location *al, struct perf_sample *sample, - struct machine *machine) + struct addr_location *al, struct perf_sample *sample) { struct report *rep = container_of(tool, struct report, tool); struct symbol *parent = NULL; struct hist_entry *he; - int err = report__resolve_callchain(rep, &parent, evsel, al, sample, machine); + int err = report__resolve_callchain(rep, &parent, evsel, al, sample); if (err) return err; @@ -256,18 +254,18 @@ static int process_sample_event(struct perf_tool *tool, return 0; if (sort__mode == SORT_MODE__BRANCH) { - ret = report__add_branch_hist_entry(tool, &al, sample, evsel, machine); + ret = report__add_branch_hist_entry(tool, &al, sample, evsel); if (ret < 0) pr_debug("problem adding lbr entry, skipping event\n"); } else if (rep->mem_mode == 1) { - ret = report__add_mem_hist_entry(tool, &al, sample, evsel, machine, event); + ret = report__add_mem_hist_entry(tool, &al, sample, evsel, event); if (ret < 0) pr_debug("problem adding mem entry, skipping event\n"); } else { if (al.map != NULL) al.map->dso->hit = 1; - ret = report__add_hist_entry(tool, evsel, &al, sample, machine); + ret = report__add_hist_entry(tool, evsel, &al, sample); if (ret < 0) pr_debug("problem incrementing symbol period, skipping event\n"); } |