Lines Matching refs:counter

367 static bool is_mixed_hw_group(struct evsel *counter)  in is_mixed_hw_group()  argument
369 struct evlist *evlist = counter->evlist; in is_mixed_hw_group()
370 u32 pmu_type = counter->core.attr.type; in is_mixed_hw_group()
373 if (counter->core.nr_members < 2) in is_mixed_hw_group()
392 struct evsel *counter, double uval, in printout() argument
402 .evsel = counter, in printout()
430 if (counter->cgrp) in printout()
433 if (run == 0 || ena == 0 || counter->counts->scaled == -1) { in printout()
438 aggr_printout(config, counter, id, nr); in printout()
442 counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED, in printout()
445 if (counter->supported) { in printout()
447 if (is_mixed_hw_group(counter)) in printout()
453 counter->unit, config->csv_sep); in printout()
457 perf_evsel__name(counter)); in printout()
459 print_cgroup(config, counter); in printout()
463 print_noise(config, counter, noise); in printout()
471 abs_printout(config, id, nr, counter, uval); in printout()
479 print_noise(config, counter, noise); in printout()
483 perf_stat__print_shadow_stats(config, counter, uval, in printout()
484 first_shadow_cpu(config, counter, id), in printout()
487 print_noise(config, counter, noise); in printout()
497 struct evsel *counter; in aggr_update_shadow() local
501 evlist__for_each_entry(evlist, counter) { in aggr_update_shadow()
503 for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) { in aggr_update_shadow()
507 val += perf_counts(counter->counts, cpu, 0)->val; in aggr_update_shadow()
509 perf_stat__update_shadow_stats(counter, val, in aggr_update_shadow()
510 first_shadow_cpu(config, counter, id), in aggr_update_shadow()
516 static void uniquify_event_name(struct evsel *counter) in uniquify_event_name() argument
521 if (counter->uniquified_name || in uniquify_event_name()
522 !counter->pmu_name || !strncmp(counter->name, counter->pmu_name, in uniquify_event_name()
523 strlen(counter->pmu_name))) in uniquify_event_name()
526 config = strchr(counter->name, '/'); in uniquify_event_name()
529 "%s%s", counter->pmu_name, config) > 0) { in uniquify_event_name()
530 free(counter->name); in uniquify_event_name()
531 counter->name = new_name; in uniquify_event_name()
535 "%s [%s]", counter->name, counter->pmu_name) > 0) { in uniquify_event_name()
536 free(counter->name); in uniquify_event_name()
537 counter->name = new_name; in uniquify_event_name()
541 counter->uniquified_name = true; in uniquify_event_name()
544 static void collect_all_aliases(struct perf_stat_config *config, struct evsel *counter, in collect_all_aliases() argument
545 void (*cb)(struct perf_stat_config *config, struct evsel *counter, void *data, in collect_all_aliases()
549 struct evlist *evlist = counter->evlist; in collect_all_aliases()
552 alias = list_prepare_entry(counter, &(evlist->core.entries), core.node); in collect_all_aliases()
554 if (strcmp(perf_evsel__name(alias), perf_evsel__name(counter)) || in collect_all_aliases()
555 alias->scale != counter->scale || in collect_all_aliases()
556 alias->cgrp != counter->cgrp || in collect_all_aliases()
557 strcmp(alias->unit, counter->unit) || in collect_all_aliases()
558 perf_evsel__is_clock(alias) != perf_evsel__is_clock(counter) || in collect_all_aliases()
559 !strcmp(alias->pmu_name, counter->pmu_name)) in collect_all_aliases()
566 static bool collect_data(struct perf_stat_config *config, struct evsel *counter, in collect_data() argument
567 void (*cb)(struct perf_stat_config *config, struct evsel *counter, void *data, in collect_data()
571 if (counter->merged_stat) in collect_data()
573 cb(config, counter, data, true); in collect_data()
575 uniquify_event_name(counter); in collect_data()
576 else if (counter->auto_merge_stats) in collect_data()
577 collect_all_aliases(config, counter, cb, data); in collect_data()
589 struct evsel *counter, void *data, bool first) in aggr_cb() argument
594 for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) { in aggr_cb()
597 s2 = config->aggr_get_id(config, evsel__cpus(counter), cpu); in aggr_cb()
602 counts = perf_counts(counter->counts, cpu, 0); in aggr_cb()
608 counter->counts->scaled == -1) { in aggr_cb()
620 struct evsel *counter, int s, in print_counter_aggrdata() argument
633 if (!collect_data(config, counter, aggr_cb, &ad)) in print_counter_aggrdata()
642 aggr_printout(config, counter, id, nr); in print_counter_aggrdata()
647 uval = val * counter->scale; in print_counter_aggrdata()
648 printout(config, id, nr, counter, uval, prefix, in print_counter_aggrdata()
660 struct evsel *counter; in print_aggr() local
678 evlist__for_each_entry(evlist, counter) { in print_aggr()
679 print_counter_aggrdata(config, counter, s, in print_aggr()
695 struct evsel *counter, in sort_aggr_thread() argument
712 val += perf_counts(counter->counts, cpu, thread)->val; in sort_aggr_thread()
713 ena += perf_counts(counter->counts, cpu, thread)->ena; in sort_aggr_thread()
714 run += perf_counts(counter->counts, cpu, thread)->run; in sort_aggr_thread()
717 uval = val * counter->scale; in sort_aggr_thread()
726 buf[i].counter = counter; in sort_aggr_thread()
745 struct evsel *counter, char *prefix) in print_aggr_thread() argument
748 int nthreads = perf_thread_map__nr(counter->core.threads); in print_aggr_thread()
749 int ncpus = perf_cpu_map__nr(counter->core.cpus); in print_aggr_thread()
753 buf = sort_aggr_thread(counter, nthreads, ncpus, &sorted_threads, _target); in print_aggr_thread()
765 printout(config, id, 0, buf[thread].counter, buf[thread].uval, in print_aggr_thread()
769 printout(config, id, 0, buf[thread].counter, buf[thread].uval, in print_aggr_thread()
783 struct evsel *counter, void *data, in counter_aggr_cb() argument
787 struct perf_stat_evsel *ps = counter->stats; in counter_aggr_cb()
799 struct evsel *counter, char *prefix) in print_counter_aggr() argument
806 if (!collect_data(config, counter, counter_aggr_cb, &cd)) in print_counter_aggr()
812 uval = cd.avg * counter->scale; in print_counter_aggr()
813 printout(config, -1, 0, counter, uval, prefix, cd.avg_running, cd.avg_enabled, in print_counter_aggr()
820 struct evsel *counter, void *data, in counter_cb() argument
825 ad->val += perf_counts(counter->counts, ad->cpu, 0)->val; in counter_cb()
826 ad->ena += perf_counts(counter->counts, ad->cpu, 0)->ena; in counter_cb()
827 ad->run += perf_counts(counter->counts, ad->cpu, 0)->run; in counter_cb()
835 struct evsel *counter, char *prefix) in print_counter() argument
842 for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) { in print_counter()
845 if (!collect_data(config, counter, counter_cb, &ad)) in print_counter()
854 uval = val * counter->scale; in print_counter()
855 printout(config, cpu, 0, counter, uval, prefix, run, ena, 1.0, in print_counter()
868 struct evsel *counter; in print_no_aggr_metric() local
878 evlist__for_each_entry(evlist, counter) { in print_no_aggr_metric()
880 aggr_printout(config, counter, cpu, 0); in print_no_aggr_metric()
883 val = perf_counts(counter->counts, cpu, 0)->val; in print_no_aggr_metric()
884 ena = perf_counts(counter->counts, cpu, 0)->ena; in print_no_aggr_metric()
885 run = perf_counts(counter->counts, cpu, 0)->run; in print_no_aggr_metric()
887 uval = val * counter->scale; in print_no_aggr_metric()
888 printout(config, cpu, 0, counter, uval, prefix, run, ena, 1.0, in print_no_aggr_metric()
918 struct evsel *counter; in print_metric_headers() local
936 evlist__for_each_entry(evlist, counter) { in print_metric_headers()
937 os.evsel = counter; in print_metric_headers()
942 os.evsel = counter; in print_metric_headers()
943 perf_stat__print_shadow_stats(config, counter, 0, in print_metric_headers()
1136 struct evsel *counter, char *prefix) in print_percore() argument
1150 print_counter_aggrdata(config, counter, s, in print_percore()
1168 struct evsel *counter; in perf_evlist__print_counters() local
1194 evlist__for_each_entry(evlist, counter) { in perf_evlist__print_counters()
1195 print_aggr_thread(config, _target, counter, prefix); in perf_evlist__print_counters()
1199 evlist__for_each_entry(evlist, counter) { in perf_evlist__print_counters()
1200 print_counter_aggr(config, counter, prefix); in perf_evlist__print_counters()
1209 evlist__for_each_entry(evlist, counter) { in perf_evlist__print_counters()
1210 if (counter->percore) in perf_evlist__print_counters()
1211 print_percore(config, counter, prefix); in perf_evlist__print_counters()
1213 print_counter(config, counter, prefix); in perf_evlist__print_counters()