diff options
author | Namhyung Kim <namhyung@kernel.org> | 2014-04-22 00:44:23 -0400 |
---|---|---|
committer | Jiri Olsa <jolsa@kernel.org> | 2014-04-24 10:32:44 -0400 |
commit | 3186b6815d49b5e0defbd884223da3778edb59fc (patch) | |
tree | 09914b5fc25a8d04fb32b895296474515e8d1969 | |
parent | 820bc81f4cdaac09a8f25040d3a20d86f3da292b (diff) |
perf hists: Add missing update on filtered stats in hists__decay_entries()
When a filter is used for perf top, its hists->nr_non_filtered_entries
was not updated after it removed an entry in hists__decay_entries().
Also hists->stats.total_non_filtered_period was missed too.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1398327843-31845-8-git-send-email-namhyung@kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
-rw-r--r-- | tools/perf/util/hist.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index 6d0d2d75db68..7f0236cea4fe 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c | |||
@@ -225,14 +225,18 @@ static void he_stat__decay(struct he_stat *he_stat) | |||
225 | static bool hists__decay_entry(struct hists *hists, struct hist_entry *he) | 225 | static bool hists__decay_entry(struct hists *hists, struct hist_entry *he) |
226 | { | 226 | { |
227 | u64 prev_period = he->stat.period; | 227 | u64 prev_period = he->stat.period; |
228 | u64 diff; | ||
228 | 229 | ||
229 | if (prev_period == 0) | 230 | if (prev_period == 0) |
230 | return true; | 231 | return true; |
231 | 232 | ||
232 | he_stat__decay(&he->stat); | 233 | he_stat__decay(&he->stat); |
233 | 234 | ||
235 | diff = prev_period - he->stat.period; | ||
236 | |||
237 | hists->stats.total_period -= diff; | ||
234 | if (!he->filtered) | 238 | if (!he->filtered) |
235 | hists->stats.total_period -= prev_period - he->stat.period; | 239 | hists->stats.total_non_filtered_period -= diff; |
236 | 240 | ||
237 | return he->stat.period == 0; | 241 | return he->stat.period == 0; |
238 | } | 242 | } |
@@ -259,8 +263,11 @@ void hists__decay_entries(struct hists *hists, bool zap_user, bool zap_kernel) | |||
259 | if (sort__need_collapse) | 263 | if (sort__need_collapse) |
260 | rb_erase(&n->rb_node_in, &hists->entries_collapsed); | 264 | rb_erase(&n->rb_node_in, &hists->entries_collapsed); |
261 | 265 | ||
262 | hist_entry__free(n); | ||
263 | --hists->nr_entries; | 266 | --hists->nr_entries; |
267 | if (!n->filtered) | ||
268 | --hists->nr_non_filtered_entries; | ||
269 | |||
270 | hist_entry__free(n); | ||
264 | } | 271 | } |
265 | } | 272 | } |
266 | } | 273 | } |