diff options
Diffstat (limited to 'tools')
| -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); |
