Lines Matching refs:counter
372 static bool is_mixed_hw_group(struct evsel *counter) in is_mixed_hw_group() argument
374 struct evlist *evlist = counter->evlist; in is_mixed_hw_group()
375 u32 pmu_type = counter->core.attr.type; in is_mixed_hw_group()
378 if (counter->core.nr_members < 2) in is_mixed_hw_group()
397 struct evsel *counter, double uval, in printout() argument
407 .evsel = counter, in printout()
435 if (counter->cgrp) in printout()
438 if (run == 0 || ena == 0 || counter->counts->scaled == -1) { in printout()
443 aggr_printout(config, counter, id, nr); in printout()
447 counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED, in printout()
450 if (counter->supported) { in printout()
452 if (is_mixed_hw_group(counter)) in printout()
458 counter->unit, config->csv_sep); in printout()
461 config->csv_output ? 0 : -25, evsel__name(counter)); in printout()
463 print_cgroup(config, counter); in printout()
467 print_noise(config, counter, noise); in printout()
475 abs_printout(config, id, nr, counter, uval); in printout()
483 print_noise(config, counter, noise); in printout()
487 perf_stat__print_shadow_stats(config, counter, uval, in printout()
488 first_shadow_cpu(config, counter, id), in printout()
491 print_noise(config, counter, noise); in printout()
501 struct evsel *counter; in aggr_update_shadow() local
505 evlist__for_each_entry(evlist, counter) { in aggr_update_shadow()
507 for (cpu = 0; cpu < evsel__nr_cpus(counter); cpu++) { in aggr_update_shadow()
511 val += perf_counts(counter->counts, cpu, 0)->val; in aggr_update_shadow()
513 perf_stat__update_shadow_stats(counter, val, in aggr_update_shadow()
514 first_shadow_cpu(config, counter, id), in aggr_update_shadow()
520 static void uniquify_event_name(struct evsel *counter) in uniquify_event_name() argument
525 if (counter->uniquified_name || in uniquify_event_name()
526 !counter->pmu_name || !strncmp(counter->name, counter->pmu_name, in uniquify_event_name()
527 strlen(counter->pmu_name))) in uniquify_event_name()
530 config = strchr(counter->name, '/'); in uniquify_event_name()
533 "%s%s", counter->pmu_name, config) > 0) { in uniquify_event_name()
534 free(counter->name); in uniquify_event_name()
535 counter->name = new_name; in uniquify_event_name()
539 "%s [%s]", counter->name, counter->pmu_name) > 0) { in uniquify_event_name()
540 free(counter->name); in uniquify_event_name()
541 counter->name = new_name; in uniquify_event_name()
545 counter->uniquified_name = true; in uniquify_event_name()
548 static void collect_all_aliases(struct perf_stat_config *config, struct evsel *counter, in collect_all_aliases() argument
549 void (*cb)(struct perf_stat_config *config, struct evsel *counter, void *data, in collect_all_aliases()
553 struct evlist *evlist = counter->evlist; in collect_all_aliases()
556 alias = list_prepare_entry(counter, &(evlist->core.entries), core.node); in collect_all_aliases()
558 if (strcmp(evsel__name(alias), evsel__name(counter)) || in collect_all_aliases()
559 alias->scale != counter->scale || in collect_all_aliases()
560 alias->cgrp != counter->cgrp || in collect_all_aliases()
561 strcmp(alias->unit, counter->unit) || in collect_all_aliases()
562 evsel__is_clock(alias) != evsel__is_clock(counter) || in collect_all_aliases()
563 !strcmp(alias->pmu_name, counter->pmu_name)) in collect_all_aliases()
570 static bool collect_data(struct perf_stat_config *config, struct evsel *counter, in collect_data() argument
571 void (*cb)(struct perf_stat_config *config, struct evsel *counter, void *data, in collect_data()
575 if (counter->merged_stat) in collect_data()
577 cb(config, counter, data, true); in collect_data()
579 uniquify_event_name(counter); in collect_data()
580 else if (counter->auto_merge_stats) in collect_data()
581 collect_all_aliases(config, counter, cb, data); in collect_data()
593 struct evsel *counter, void *data, bool first) in aggr_cb() argument
598 for (cpu = 0; cpu < evsel__nr_cpus(counter); cpu++) { in aggr_cb()
601 s2 = config->aggr_get_id(config, evsel__cpus(counter), cpu); in aggr_cb()
606 counts = perf_counts(counter->counts, cpu, 0); in aggr_cb()
612 counter->counts->scaled == -1) { in aggr_cb()
624 struct evsel *counter, int s, in print_counter_aggrdata() argument
637 if (!collect_data(config, counter, aggr_cb, &ad)) in print_counter_aggrdata()
646 aggr_printout(config, counter, id, nr); in print_counter_aggrdata()
651 uval = val * counter->scale; in print_counter_aggrdata()
652 printout(config, cpu != -1 ? cpu : id, nr, counter, uval, prefix, in print_counter_aggrdata()
664 struct evsel *counter; in print_aggr() local
682 evlist__for_each_entry(evlist, counter) { in print_aggr()
683 print_counter_aggrdata(config, counter, s, in print_aggr()
699 struct evsel *counter, in sort_aggr_thread() argument
716 val += perf_counts(counter->counts, cpu, thread)->val; in sort_aggr_thread()
717 ena += perf_counts(counter->counts, cpu, thread)->ena; in sort_aggr_thread()
718 run += perf_counts(counter->counts, cpu, thread)->run; in sort_aggr_thread()
721 uval = val * counter->scale; in sort_aggr_thread()
730 buf[i].counter = counter; in sort_aggr_thread()
749 struct evsel *counter, char *prefix) in print_aggr_thread() argument
752 int nthreads = perf_thread_map__nr(counter->core.threads); in print_aggr_thread()
753 int ncpus = perf_cpu_map__nr(counter->core.cpus); in print_aggr_thread()
757 buf = sort_aggr_thread(counter, nthreads, ncpus, &sorted_threads, _target); in print_aggr_thread()
769 printout(config, id, 0, buf[thread].counter, buf[thread].uval, in print_aggr_thread()
773 printout(config, id, 0, buf[thread].counter, buf[thread].uval, in print_aggr_thread()
787 struct evsel *counter, void *data, in counter_aggr_cb() argument
791 struct perf_stat_evsel *ps = counter->stats; in counter_aggr_cb()
803 struct evsel *counter, char *prefix) in print_counter_aggr() argument
810 if (!collect_data(config, counter, counter_aggr_cb, &cd)) in print_counter_aggr()
816 uval = cd.avg * counter->scale; in print_counter_aggr()
817 printout(config, -1, 0, counter, uval, prefix, cd.avg_running, cd.avg_enabled, in print_counter_aggr()
824 struct evsel *counter, void *data, in counter_cb() argument
829 ad->val += perf_counts(counter->counts, ad->cpu, 0)->val; in counter_cb()
830 ad->ena += perf_counts(counter->counts, ad->cpu, 0)->ena; in counter_cb()
831 ad->run += perf_counts(counter->counts, ad->cpu, 0)->run; in counter_cb()
839 struct evsel *counter, char *prefix) in print_counter() argument
846 for (cpu = 0; cpu < evsel__nr_cpus(counter); cpu++) { in print_counter()
849 if (!collect_data(config, counter, counter_cb, &ad)) in print_counter()
858 uval = val * counter->scale; in print_counter()
859 printout(config, cpu, 0, counter, uval, prefix, run, ena, 1.0, in print_counter()
872 struct evsel *counter; in print_no_aggr_metric() local
882 evlist__for_each_entry(evlist, counter) { in print_no_aggr_metric()
884 aggr_printout(config, counter, cpu, 0); in print_no_aggr_metric()
887 val = perf_counts(counter->counts, cpu, 0)->val; in print_no_aggr_metric()
888 ena = perf_counts(counter->counts, cpu, 0)->ena; in print_no_aggr_metric()
889 run = perf_counts(counter->counts, cpu, 0)->run; in print_no_aggr_metric()
891 uval = val * counter->scale; in print_no_aggr_metric()
892 printout(config, cpu, 0, counter, uval, prefix, run, ena, 1.0, in print_no_aggr_metric()
922 struct evsel *counter; in print_metric_headers() local
940 evlist__for_each_entry(evlist, counter) { in print_metric_headers()
941 os.evsel = counter; in print_metric_headers()
946 perf_stat__print_shadow_stats(config, counter, 0, in print_metric_headers()
1141 struct evsel *counter, char *prefix) in print_percore_thread() argument
1146 for (int i = 0; i < evsel__nr_cpus(counter); i++) { in print_percore_thread()
1147 s2 = config->aggr_get_id(config, evsel__cpus(counter), i); in print_percore_thread()
1154 print_counter_aggrdata(config, counter, s, in print_percore_thread()
1161 struct evsel *counter, char *prefix) in print_percore() argument
1172 return print_percore_thread(config, counter, prefix); in print_percore()
1178 print_counter_aggrdata(config, counter, s, in print_percore()
1196 struct evsel *counter; in perf_evlist__print_counters() local
1223 evlist__for_each_entry(evlist, counter) { in perf_evlist__print_counters()
1224 print_aggr_thread(config, _target, counter, prefix); in perf_evlist__print_counters()
1228 evlist__for_each_entry(evlist, counter) { in perf_evlist__print_counters()
1229 print_counter_aggr(config, counter, prefix); in perf_evlist__print_counters()
1238 evlist__for_each_entry(evlist, counter) { in perf_evlist__print_counters()
1239 if (counter->percore) in perf_evlist__print_counters()
1240 print_percore(config, counter, prefix); in perf_evlist__print_counters()
1242 print_counter(config, counter, prefix); in perf_evlist__print_counters()