On Sat, Mar 16, 2019 at 12:04:15AM +0800, Jin Yao wrote:

SNIP

> +static void print_counter_aggrdata(struct perf_stat_config *config,
> +                                struct perf_evsel *counter, int s,
> +                                char *prefix, bool metric_only,
> +                                bool *first)
> +{
> +     struct aggr_data ad;
> +     FILE *output = config->output;
> +     u64 ena, run, val;
> +     int id, nr;
> +     double uval;
> +
> +     ad.id = id = config->aggr_map->map[s];
> +     ad.val = ad.ena = ad.run = 0;
> +     ad.nr = 0;
> +     if (!collect_data(config, counter, aggr_cb, &ad))
> +             return;
> +
> +     nr = ad.nr;
> +     ena = ad.ena;
> +     run = ad.run;
> +     val = ad.val;
> +     if (*first && metric_only) {
> +             *first = false;
> +             aggr_printout(config, counter, id, nr);
> +     }
> +     if (prefix && !metric_only)
> +             fprintf(output, "%s", prefix);
> +
> +     uval = val * counter->scale;
> +     printout(config, id, nr, counter, uval, prefix,
> +              run, ena, 1.0, &rt_stat);
> +     if (!metric_only)
> +             fputc('\n', output);
> +}

plese put the factoring out of print_counter_aggrdata function
into separate patch

thanks,
jirka


> +
>  static void print_aggr(struct perf_stat_config *config,
>                      struct perf_evlist *evlist,
>                      char *prefix)
> @@ -606,9 +649,7 @@ static void print_aggr(struct perf_stat_config *config,
>       bool metric_only = config->metric_only;
>       FILE *output = config->output;
>       struct perf_evsel *counter;
> -     int s, id, nr;
> -     double uval;
> -     u64 ena, run, val;
> +     int s;
>       bool first;
>  
>       if (!(config->aggr_map || config->aggr_get_id))
> @@ -621,36 +662,16 @@ static void print_aggr(struct perf_stat_config *config,
>        * Without each counter has its own line.
>        */
>       for (s = 0; s < config->aggr_map->nr; s++) {
> -             struct aggr_data ad;
>               if (prefix && metric_only)
>                       fprintf(output, "%s", prefix);
>  
> -             ad.id = id = config->aggr_map->map[s];
>               first = true;
>               evlist__for_each_entry(evlist, counter) {
>                       if (is_duration_time(counter))
>                               continue;
> -
> -                     ad.val = ad.ena = ad.run = 0;
> -                     ad.nr = 0;
> -                     if (!collect_data(config, counter, aggr_cb, &ad))
> -                             continue;
> -                     nr = ad.nr;
> -                     ena = ad.ena;
> -                     run = ad.run;
> -                     val = ad.val;
> -                     if (first && metric_only) {
> -                             first = false;
> -                             aggr_printout(config, counter, id, nr);
> -                     }
> -                     if (prefix && !metric_only)
> -                             fprintf(output, "%s", prefix);
> -
> -                     uval = val * counter->scale;
> -                     printout(config, id, nr, counter, uval, prefix,
> -                              run, ena, 1.0, &rt_stat);
> -                     if (!metric_only)
> -                             fputc('\n', output);
> +                     print_counter_aggrdata(config, counter, s,
> +                                            prefix, metric_only,
> +                                            &first);

SNIP

Reply via email to