diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-05-09 12:02:23 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-05-09 12:10:39 -0400 |
commit | 28e2a106d16046ca792722795f809e3f80a5af80 (patch) | |
tree | c84149ddf45d02044187fe4511cead93d009b6ee /tools/perf/builtin-report.c | |
parent | 39d1e1b1e26dc84d40bf2792287d0d61e44b57df (diff) |
perf hist: Simplify the insertion of new hist_entry instances
And with that fix at least one bug:
The first hit for an entry, the one that calls malloc to create a new
instance in __perf_session__add_hist_entry, wasn't adding the count to
the per cpumode (PERF_RECORD_MISC_USER, etc) total variable.
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
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 | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 3a70c5807c04..5e2f47f88ec6 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
@@ -82,7 +82,6 @@ static int perf_session__add_hist_entry(struct perf_session *self, | |||
82 | { | 82 | { |
83 | struct map_symbol *syms = NULL; | 83 | struct map_symbol *syms = NULL; |
84 | struct symbol *parent = NULL; | 84 | struct symbol *parent = NULL; |
85 | bool hit; | ||
86 | int err = -ENOMEM; | 85 | int err = -ENOMEM; |
87 | struct hist_entry *he; | 86 | struct hist_entry *he; |
88 | struct event_stat_id *stats; | 87 | struct event_stat_id *stats; |
@@ -103,19 +102,12 @@ static int perf_session__add_hist_entry(struct perf_session *self, | |||
103 | if (stats == NULL) | 102 | if (stats == NULL) |
104 | goto out_free_syms; | 103 | goto out_free_syms; |
105 | he = __perf_session__add_hist_entry(&stats->hists, al, parent, | 104 | he = __perf_session__add_hist_entry(&stats->hists, al, parent, |
106 | data->period, &hit); | 105 | data->period); |
107 | if (he == NULL) | 106 | if (he == NULL) |
108 | goto out_free_syms; | 107 | goto out_free_syms; |
109 | |||
110 | if (hit) | ||
111 | __perf_session__add_count(he, al, data->period); | ||
112 | |||
113 | err = 0; | 108 | err = 0; |
114 | if (symbol_conf.use_callchain) { | 109 | if (symbol_conf.use_callchain) |
115 | if (!hit) | ||
116 | callchain_init(he->callchain); | ||
117 | err = append_chain(he->callchain, data->callchain, syms); | 110 | err = append_chain(he->callchain, data->callchain, syms); |
118 | } | ||
119 | out_free_syms: | 111 | out_free_syms: |
120 | free(syms); | 112 | free(syms); |
121 | return err; | 113 | return err; |