diff options
author | Namhyung Kim <namhyung.kim@lge.com> | 2012-10-04 08:49:43 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-10-04 12:36:18 -0400 |
commit | 139c0815903de1a7865fe1d6beac5e995fefdf46 (patch) | |
tree | 7bfba0d05cd7ec188883cbe9b41db794e642fa44 | |
parent | c4b35351ef3145c9abad64999d1de0de1b8361ab (diff) |
perf hists: Add more helpers for hist entry stat
Add and use he_stat__add_{period,stat} for calculating hist entry's
stat. It will be used for accumulated stats later as well.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Arun Sharma <asharma@fb.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1349354994-17853-10-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/util/hist.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index 02476cb3167d..277947a669b2 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c | |||
@@ -151,6 +151,22 @@ static void hist_entry__add_cpumode_period(struct hist_entry *he, | |||
151 | } | 151 | } |
152 | } | 152 | } |
153 | 153 | ||
154 | static void he_stat__add_period(struct he_stat *he_stat, u64 period) | ||
155 | { | ||
156 | he_stat->period += period; | ||
157 | he_stat->nr_events += 1; | ||
158 | } | ||
159 | |||
160 | static void he_stat__add_stat(struct he_stat *dest, struct he_stat *src) | ||
161 | { | ||
162 | dest->period += src->period; | ||
163 | dest->period_sys += src->period_sys; | ||
164 | dest->period_us += src->period_us; | ||
165 | dest->period_guest_sys += src->period_guest_sys; | ||
166 | dest->period_guest_us += src->period_guest_us; | ||
167 | dest->nr_events += src->nr_events; | ||
168 | } | ||
169 | |||
154 | static void hist_entry__decay(struct hist_entry *he) | 170 | static void hist_entry__decay(struct hist_entry *he) |
155 | { | 171 | { |
156 | he->stat.period = (he->stat.period * 7) / 8; | 172 | he->stat.period = (he->stat.period * 7) / 8; |
@@ -270,8 +286,7 @@ static struct hist_entry *add_hist_entry(struct hists *hists, | |||
270 | cmp = hist_entry__cmp(entry, he); | 286 | cmp = hist_entry__cmp(entry, he); |
271 | 287 | ||
272 | if (!cmp) { | 288 | if (!cmp) { |
273 | he->stat.period += period; | 289 | he_stat__add_period(&he->stat, period); |
274 | ++he->stat.nr_events; | ||
275 | 290 | ||
276 | /* If the map of an existing hist_entry has | 291 | /* If the map of an existing hist_entry has |
277 | * become out-of-date due to an exec() or | 292 | * become out-of-date due to an exec() or |
@@ -418,12 +433,7 @@ static bool hists__collapse_insert_entry(struct hists *hists __maybe_unused, | |||
418 | cmp = hist_entry__collapse(iter, he); | 433 | cmp = hist_entry__collapse(iter, he); |
419 | 434 | ||
420 | if (!cmp) { | 435 | if (!cmp) { |
421 | iter->stat.period += he->stat.period; | 436 | he_stat__add_stat(&iter->stat, &he->stat); |
422 | iter->stat.period_sys += he->stat.period_sys; | ||
423 | iter->stat.period_us += he->stat.period_us; | ||
424 | iter->stat.period_guest_sys += he->stat.period_guest_sys; | ||
425 | iter->stat.period_guest_us += he->stat.period_guest_us; | ||
426 | iter->stat.nr_events += he->stat.nr_events; | ||
427 | 437 | ||
428 | if (symbol_conf.use_callchain) { | 438 | if (symbol_conf.use_callchain) { |
429 | callchain_cursor_reset(&callchain_cursor); | 439 | callchain_cursor_reset(&callchain_cursor); |