Lines Matching refs:counter

513 static bool is_mixed_hw_group(struct evsel *counter)  in is_mixed_hw_group()  argument
515 struct evlist *evlist = counter->evlist; in is_mixed_hw_group()
516 u32 pmu_type = counter->core.attr.type; in is_mixed_hw_group()
519 if (counter->core.nr_members < 2) in is_mixed_hw_group()
538 struct evsel *counter, double uval, in printout() argument
548 .evsel = counter, in printout()
567 os.nfields = 3 + aggr_fields[config->aggr_mode] + (counter->cgrp ? 1 : 0); in printout()
581 if (run == 0 || ena == 0 || counter->counts->scaled == -1) { in printout()
586 aggr_printout(config, counter, id, nr); in printout()
590 counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED); in printout()
594 counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED, in printout()
598 if (counter->supported) { in printout()
599 if (!evlist__has_hybrid(counter->evlist)) { in printout()
601 if (is_mixed_hw_group(counter)) in printout()
607 fprintf(config->output, "\"unit\" : \"%s\", ", counter->unit); in printout()
611 counter->unit, config->csv_sep); in printout()
616 evsel__name(counter)); in printout()
619 config->csv_output ? 0 : -25, evsel__name(counter)); in printout()
622 print_cgroup(config, counter); in printout()
626 print_noise(config, counter, noise); in printout()
636 abs_printout(config, id, nr, counter, uval); in printout()
644 print_noise(config, counter, noise); in printout()
647 print_noise(config, counter, noise); in printout()
651 perf_stat__print_shadow_stats(config, counter, uval, in printout()
652 first_shadow_map_idx(config, counter, &id), in printout()
655 print_noise(config, counter, noise); in printout()
667 struct evsel *counter; in aggr_update_shadow() local
672 evlist__for_each_entry(evlist, counter) { in aggr_update_shadow()
673 cpus = evsel__cpus(counter); in aggr_update_shadow()
679 val += perf_counts(counter->counts, idx, 0)->val; in aggr_update_shadow()
681 perf_stat__update_shadow_stats(counter, val, in aggr_update_shadow()
682 first_shadow_map_idx(config, counter, &id), in aggr_update_shadow()
688 static void uniquify_event_name(struct evsel *counter) in uniquify_event_name() argument
694 if (counter->uniquified_name || counter->use_config_name || in uniquify_event_name()
695 !counter->pmu_name || !strncmp(counter->name, counter->pmu_name, in uniquify_event_name()
696 strlen(counter->pmu_name))) in uniquify_event_name()
699 config = strchr(counter->name, '/'); in uniquify_event_name()
702 "%s%s", counter->pmu_name, config) > 0) { in uniquify_event_name()
703 free(counter->name); in uniquify_event_name()
704 counter->name = new_name; in uniquify_event_name()
709 counter->pmu_name, counter->name); in uniquify_event_name()
712 counter->name, counter->pmu_name); in uniquify_event_name()
716 free(counter->name); in uniquify_event_name()
717 counter->name = new_name; in uniquify_event_name()
721 counter->uniquified_name = true; in uniquify_event_name()
724 static void collect_all_aliases(struct perf_stat_config *config, struct evsel *counter, in collect_all_aliases() argument
725 void (*cb)(struct perf_stat_config *config, struct evsel *counter, void *data, in collect_all_aliases()
729 struct evlist *evlist = counter->evlist; in collect_all_aliases()
732 alias = list_prepare_entry(counter, &(evlist->core.entries), core.node); in collect_all_aliases()
735 if (!strcmp(evsel__name(alias), evsel__name(counter)) && in collect_all_aliases()
736 alias->scale == counter->scale && in collect_all_aliases()
737 alias->cgrp == counter->cgrp && in collect_all_aliases()
738 !strcmp(alias->unit, counter->unit) && in collect_all_aliases()
739 evsel__is_clock(alias) == evsel__is_clock(counter) && in collect_all_aliases()
740 strcmp(alias->pmu_name, counter->pmu_name)) { in collect_all_aliases()
759 static bool hybrid_merge(struct evsel *counter, struct perf_stat_config *config, in hybrid_merge() argument
762 if (hybrid_uniquify(counter)) { in hybrid_merge()
772 static bool collect_data(struct perf_stat_config *config, struct evsel *counter, in collect_data() argument
773 void (*cb)(struct perf_stat_config *config, struct evsel *counter, void *data, in collect_data()
777 if (counter->merged_stat) in collect_data()
779 cb(config, counter, data, true); in collect_data()
780 if (config->no_merge || hybrid_merge(counter, config, false)) in collect_data()
781 uniquify_event_name(counter); in collect_data()
782 else if (counter->auto_merge_stats || hybrid_merge(counter, config, true)) in collect_data()
783 collect_all_aliases(config, counter, cb, data); in collect_data()
795 struct evsel *counter, void *data, bool first) in aggr_cb() argument
803 cpus = evsel__cpus(counter); in aggr_cb()
812 counts = perf_counts(counter->counts, idx, 0); in aggr_cb()
818 counter->counts->scaled == -1) { in aggr_cb()
830 struct evsel *counter, int s, in print_counter_aggrdata() argument
844 if (!collect_data(config, counter, aggr_cb, &ad)) in print_counter_aggrdata()
856 aggr_printout(config, counter, id, nr); in print_counter_aggrdata()
861 uval = val * counter->scale; in print_counter_aggrdata()
865 printout(config, id, nr, counter, uval, in print_counter_aggrdata()
877 struct evsel *counter; in print_aggr() local
895 evlist__for_each_entry(evlist, counter) { in print_aggr()
896 print_counter_aggrdata(config, counter, s, in print_aggr()
912 struct evsel *counter, in sort_aggr_thread() argument
916 int nthreads = perf_thread_map__nr(counter->core.threads); in sort_aggr_thread()
929 perf_cpu_map__for_each_idx(idx, evsel__cpus(counter)) { in sort_aggr_thread()
931 perf_counts(counter->counts, idx, thread); in sort_aggr_thread()
938 uval = val * counter->scale; in sort_aggr_thread()
947 buf[i].counter = counter; in sort_aggr_thread()
967 struct evsel *counter, char *prefix) in print_aggr_thread() argument
974 buf = sort_aggr_thread(counter, &sorted_threads, _target); in print_aggr_thread()
985 printout(config, id, 0, buf[thread].counter, buf[thread].uval, in print_aggr_thread()
999 struct evsel *counter, void *data, in counter_aggr_cb() argument
1003 struct perf_counts_values *aggr = &counter->counts->aggr; in counter_aggr_cb()
1015 struct evsel *counter, char *prefix) in print_counter_aggr() argument
1022 if (!collect_data(config, counter, counter_aggr_cb, &cd)) in print_counter_aggr()
1028 uval = cd.avg * counter->scale; in print_counter_aggr()
1029 printout(config, aggr_cpu_id__empty(), 0, counter, uval, prefix, cd.avg_running, in print_counter_aggr()
1036 struct evsel *counter, void *data, in counter_cb() argument
1041 ad->val += perf_counts(counter->counts, ad->cpu_map_idx, 0)->val; in counter_cb()
1042 ad->ena += perf_counts(counter->counts, ad->cpu_map_idx, 0)->ena; in counter_cb()
1043 ad->run += perf_counts(counter->counts, ad->cpu_map_idx, 0)->run; in counter_cb()
1051 struct evsel *counter, char *prefix) in print_counter() argument
1060 perf_cpu_map__for_each_cpu(cpu, idx, evsel__cpus(counter)) { in print_counter()
1063 if (!collect_data(config, counter, counter_cb, &ad)) in print_counter()
1072 uval = val * counter->scale; in print_counter()
1074 printout(config, id, 0, counter, uval, prefix, in print_counter()
1089 struct evsel *counter; in print_no_aggr_metric() local
1092 evlist__for_each_entry(evlist, counter) { in print_no_aggr_metric()
1096 int counter_idx = perf_cpu_map__idx(evsel__cpus(counter), cpu); in print_no_aggr_metric()
1105 aggr_printout(config, counter, id, 0); in print_no_aggr_metric()
1108 val = perf_counts(counter->counts, counter_idx, 0)->val; in print_no_aggr_metric()
1109 ena = perf_counts(counter->counts, counter_idx, 0)->ena; in print_no_aggr_metric()
1110 run = perf_counts(counter->counts, counter_idx, 0)->run; in print_no_aggr_metric()
1112 uval = val * counter->scale; in print_no_aggr_metric()
1113 printout(config, id, 0, counter, uval, prefix, in print_no_aggr_metric()
1146 struct evsel *counter; in print_metric_headers() local
1171 evlist__for_each_entry(evlist, counter) { in print_metric_headers()
1172 os.evsel = counter; in print_metric_headers()
1180 perf_stat__print_shadow_stats(config, counter, 0, in print_metric_headers()
1397 struct evsel *counter, char *prefix) in print_percore_thread() argument
1406 cpus = evsel__cpus(counter); in print_percore_thread()
1415 print_counter_aggrdata(config, counter, s, in print_percore_thread()
1422 struct evsel *counter, char *prefix) in print_percore() argument
1433 return print_percore_thread(config, counter, prefix); in print_percore()
1439 print_counter_aggrdata(config, counter, s, in print_percore()
1453 struct evsel *counter; in evlist__print_counters() local
1486 evlist__for_each_entry(evlist, counter) { in evlist__print_counters()
1487 print_aggr_thread(config, _target, counter, prefix); in evlist__print_counters()
1495 evlist__for_each_entry(evlist, counter) { in evlist__print_counters()
1496 print_counter_aggr(config, counter, prefix); in evlist__print_counters()
1506 evlist__for_each_entry(evlist, counter) { in evlist__print_counters()
1507 if (counter->percore) in evlist__print_counters()
1508 print_percore(config, counter, prefix); in evlist__print_counters()
1510 print_counter(config, counter, prefix); in evlist__print_counters()