Em Mon, Mar 10, 2014 at 04:43:54PM +0900, Namhyung Kim escreveu:
> @@ -695,12 +695,17 @@ static void hists__remove_entry_filter(struct hists 
> *hists, struct hist_entry *h
>       if (h->filtered)
>               return;
>  
> -     ++hists->nr_entries;
> -     if (h->ms.unfolded)
> +     hists->nr_entries++;
> +     hists->nr_non_filtered_entries++;

Why not keep existing practice? prefix or suffix generates the same
code, changing it from prefix to suffix increment just adds noise to the
patch :-\

Also, this is why I was asking about nr_entries and total_period being
invariant, looking at this function we can see it is _not_ invariant, as
when we apply/remove filters we touch them.

This is why I made the comment (in a private conversation) about having
a invariant_total_period invariant_nr_entries pair (I think I used some
other naming) while knowing that the existing variables nr_entries and
total_period are actually subjected to the filters being used.

I.e. to avoid confusion we need to make total_entries and nr_entries
never change when a filter is applied, touching only two new variables
for non_filtered total_period and nr_entries.

I'll try doing it if you don't do it first, but will first process some
more patches and submit what I already processed.

- Arnaldo

> +     if (h->ms.unfolded) {
>               hists->nr_entries += h->nr_rows;
> +             hists->nr_non_filtered_entries += h->nr_rows;
> +     }
>       h->row_offset = 0;
>       hists->stats.total_period += h->stat.period;
> +     hists->stats.total_non_filtered_period += h->stat.period;
>       hists->stats.nr_events[PERF_RECORD_SAMPLE] += h->stat.nr_events;
> +     hists->stats.nr_non_filtered_samples += h->stat.nr_events;
>  
>       hists__calc_col_len(hists, h);
>  }
> @@ -723,7 +728,9 @@ void hists__filter_by_dso(struct hists *hists)
>       struct rb_node *nd;
>  
>       hists->nr_entries = hists->stats.total_period = 0;
> +     hists->nr_non_filtered_entries = hists->stats.total_non_filtered_period 
> = 0;
>       hists->stats.nr_events[PERF_RECORD_SAMPLE] = 0;
> +     hists->stats.nr_non_filtered_samples = 0;
>       hists__reset_col_len(hists);
>  
>       for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) {
> @@ -756,7 +763,9 @@ void hists__filter_by_thread(struct hists *hists)
>       struct rb_node *nd;
>  
>       hists->nr_entries = hists->stats.total_period = 0;
> +     hists->nr_non_filtered_entries = hists->stats.total_non_filtered_period 
> = 0;
>       hists->stats.nr_events[PERF_RECORD_SAMPLE] = 0;
> +     hists->stats.nr_non_filtered_samples = 0;
>       hists__reset_col_len(hists);
>  
>       for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) {
> @@ -787,7 +796,9 @@ void hists__filter_by_symbol(struct hists *hists)
>       struct rb_node *nd;
>  
>       hists->nr_entries = hists->stats.total_period = 0;
> +     hists->nr_non_filtered_entries = hists->stats.total_non_filtered_period 
> = 0;
>       hists->stats.nr_events[PERF_RECORD_SAMPLE] = 0;
> +     hists->stats.nr_non_filtered_samples = 0;
>       hists__reset_col_len(hists);
>  
>       for (nd = rb_first(&hists->entries); nd; nd = rb_next(nd)) {
> diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
> index a149f1adaae4..213551469f36 100644
> --- a/tools/perf/util/hist.h
> +++ b/tools/perf/util/hist.h
> @@ -41,6 +41,7 @@ struct events_stats {
>       u64 total_lost;
>       u64 total_invalid_chains;
>       u32 nr_events[PERF_RECORD_HEADER_MAX];
> +     u32 nr_non_filtered_samples;
>       u32 nr_lost_warned;
>       u32 nr_unknown_events;
>       u32 nr_invalid_chains;
> @@ -84,6 +85,7 @@ struct hists {
>       struct rb_root          entries;
>       struct rb_root          entries_collapsed;
>       u64                     nr_entries;
> +     u64                     nr_non_filtered_entries;
>       const struct thread     *thread_filter;
>       const struct dso        *dso_filter;
>       const char              *uid_filter_str;
> -- 
> 1.7.11.7
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to