Lines Matching refs:counter

326 perf_evsel__write_stat_event(struct perf_evsel *counter, u32 cpu, u32 thread,  in perf_evsel__write_stat_event()  argument
329 struct perf_sample_id *sid = SID(counter, cpu, thread); in perf_evsel__write_stat_event()
339 static int read_counter(struct perf_evsel *counter) in read_counter() argument
345 ncpus = perf_evsel__nr_cpus(counter); in read_counter()
349 if (!counter->supported) in read_counter()
352 if (counter->system_wide) in read_counter()
359 count = perf_counts(counter->counts, cpu, thread); in read_counter()
366 perf_evsel__read_counter(counter, cpu, thread)) { in read_counter()
367 counter->counts->scaled = -1; in read_counter()
368 perf_counts(counter->counts, cpu, thread)->ena = 0; in read_counter()
369 perf_counts(counter->counts, cpu, thread)->run = 0; in read_counter()
376 if (perf_evsel__write_stat_event(counter, cpu, thread, count)) { in read_counter()
385 perf_evsel__name(counter), in read_counter()
397 struct perf_evsel *counter; in read_counters() local
400 evlist__for_each_entry(evsel_list, counter) { in read_counters()
401 ret = read_counter(counter); in read_counters()
403 pr_debug("failed to read counter %s\n", counter->name); in read_counters()
405 if (ret == 0 && perf_stat_process_counter(&stat_config, counter)) in read_counters()
406 pr_warning("failed to process counter %s\n", counter->name); in read_counters()
512 static int __store_counter_ids(struct perf_evsel *counter) in __store_counter_ids() argument
516 for (cpu = 0; cpu < xyarray__max_x(counter->fd); cpu++) { in __store_counter_ids()
517 for (thread = 0; thread < xyarray__max_y(counter->fd); in __store_counter_ids()
519 int fd = FD(counter, cpu, thread); in __store_counter_ids()
521 if (perf_evlist__id_add_fd(evsel_list, counter, in __store_counter_ids()
530 static int store_counter_ids(struct perf_evsel *counter) in store_counter_ids() argument
532 struct cpu_map *cpus = counter->cpus; in store_counter_ids()
533 struct thread_map *threads = counter->threads; in store_counter_ids()
535 if (perf_evsel__alloc_id(counter, cpus->nr, threads->nr)) in store_counter_ids()
538 return __store_counter_ids(counter); in store_counter_ids()
541 static bool perf_evsel__should_store_id(struct perf_evsel *counter) in perf_evsel__should_store_id() argument
543 return STAT_RECORD || counter->attr.read_format & PERF_FORMAT_ID; in perf_evsel__should_store_id()
579 struct perf_evsel *counter; in __run_perf_stat() local
610 evlist__for_each_entry(evsel_list, counter) { in __run_perf_stat()
612 if (create_perf_stat_counter(counter) < 0) { in __run_perf_stat()
616 counter->leader != counter && in __run_perf_stat()
617 counter->weak_group) { in __run_perf_stat()
618 counter = perf_evsel__reset_weak_group(counter); in __run_perf_stat()
631 perf_evsel__name(counter)); in __run_perf_stat()
632 counter->supported = false; in __run_perf_stat()
634 if ((counter->leader != counter) || in __run_perf_stat()
635 !(counter->leader->nr_members > 1)) in __run_perf_stat()
637 } else if (perf_evsel__fallback(counter, errno, msg, sizeof(msg))) { in __run_perf_stat()
655 perf_evsel__open_strerror(counter, &target, in __run_perf_stat()
664 counter->supported = true; in __run_perf_stat()
666 l = strlen(counter->unit); in __run_perf_stat()
670 if (perf_evsel__should_store_id(counter) && in __run_perf_stat()
671 store_counter_ids(counter)) in __run_perf_stat()
675 if (perf_evlist__apply_filters(evsel_list, &counter)) { in __run_perf_stat()
677 counter->filter, perf_evsel__name(counter), errno, in __run_perf_stat()
682 if (perf_evlist__apply_drv_configs(evsel_list, &counter, &err_term)) { in __run_perf_stat()
684 err_term->val.drv_cfg, perf_evsel__name(counter), errno, in __run_perf_stat()
1101 static bool is_mixed_hw_group(struct perf_evsel *counter) in is_mixed_hw_group() argument
1103 struct perf_evlist *evlist = counter->evlist; in is_mixed_hw_group()
1104 u32 pmu_type = counter->attr.type; in is_mixed_hw_group()
1107 if (counter->nr_members < 2) in is_mixed_hw_group()
1125 static void printout(int id, int nr, struct perf_evsel *counter, double uval, in printout() argument
1135 .evsel = counter, in printout()
1162 if (counter->cgrp) in printout()
1165 if (run == 0 || ena == 0 || counter->counts->scaled == -1) { in printout()
1170 aggr_printout(counter, id, nr); in printout()
1174 counter->supported ? CNTR_NOT_COUNTED : CNTR_NOT_SUPPORTED, in printout()
1177 if (counter->supported) { in printout()
1179 if (is_mixed_hw_group(counter)) in printout()
1185 counter->unit, csv_sep); in printout()
1189 perf_evsel__name(counter)); in printout()
1191 if (counter->cgrp) in printout()
1193 csv_sep, counter->cgrp->name); in printout()
1197 print_noise(counter, noise); in printout()
1205 abs_printout(id, nr, counter, uval); in printout()
1213 print_noise(counter, noise); in printout()
1217 perf_stat__print_shadow_stats(counter, uval, in printout()
1218 first_shadow_cpu(counter, id), in printout()
1221 print_noise(counter, noise); in printout()
1230 struct perf_evsel *counter; in aggr_update_shadow() local
1234 evlist__for_each_entry(evsel_list, counter) { in aggr_update_shadow()
1236 for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) { in aggr_update_shadow()
1240 val += perf_counts(counter->counts, cpu, 0)->val; in aggr_update_shadow()
1242 perf_stat__update_shadow_stats(counter, val, in aggr_update_shadow()
1243 first_shadow_cpu(counter, id), in aggr_update_shadow()
1249 static void uniquify_event_name(struct perf_evsel *counter) in uniquify_event_name() argument
1254 if (counter->uniquified_name || in uniquify_event_name()
1255 !counter->pmu_name || !strncmp(counter->name, counter->pmu_name, in uniquify_event_name()
1256 strlen(counter->pmu_name))) in uniquify_event_name()
1259 config = strchr(counter->name, '/'); in uniquify_event_name()
1262 "%s%s", counter->pmu_name, config) > 0) { in uniquify_event_name()
1263 free(counter->name); in uniquify_event_name()
1264 counter->name = new_name; in uniquify_event_name()
1268 "%s [%s]", counter->name, counter->pmu_name) > 0) { in uniquify_event_name()
1269 free(counter->name); in uniquify_event_name()
1270 counter->name = new_name; in uniquify_event_name()
1274 counter->uniquified_name = true; in uniquify_event_name()
1277 static void collect_all_aliases(struct perf_evsel *counter, in collect_all_aliases() argument
1278 void (*cb)(struct perf_evsel *counter, void *data, in collect_all_aliases() argument
1284 alias = list_prepare_entry(counter, &(evsel_list->entries), node); in collect_all_aliases()
1286 if (strcmp(perf_evsel__name(alias), perf_evsel__name(counter)) || in collect_all_aliases()
1287 alias->scale != counter->scale || in collect_all_aliases()
1288 alias->cgrp != counter->cgrp || in collect_all_aliases()
1289 strcmp(alias->unit, counter->unit) || in collect_all_aliases()
1290 perf_evsel__is_clock(alias) != perf_evsel__is_clock(counter)) in collect_all_aliases()
1297 static bool collect_data(struct perf_evsel *counter, in collect_data() argument
1298 void (*cb)(struct perf_evsel *counter, void *data, in collect_data() argument
1302 if (counter->merged_stat) in collect_data()
1304 cb(counter, data, true); in collect_data()
1306 uniquify_event_name(counter); in collect_data()
1307 else if (counter->auto_merge_stats) in collect_data()
1308 collect_all_aliases(counter, cb, data); in collect_data()
1319 static void aggr_cb(struct perf_evsel *counter, void *data, bool first) in aggr_cb() argument
1324 for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) { in aggr_cb()
1327 s2 = aggr_get_id(perf_evsel__cpus(counter), cpu); in aggr_cb()
1332 counts = perf_counts(counter->counts, cpu, 0); in aggr_cb()
1338 counter->counts->scaled == -1) { in aggr_cb()
1352 struct perf_evsel *counter; in print_aggr() local
1374 evlist__for_each_entry(evsel_list, counter) { in print_aggr()
1375 if (is_duration_time(counter)) in print_aggr()
1380 if (!collect_data(counter, aggr_cb, &ad)) in print_aggr()
1388 aggr_printout(counter, id, nr); in print_aggr()
1393 uval = val * counter->scale; in print_aggr()
1394 printout(id, nr, counter, uval, prefix, run, ena, 1.0, in print_aggr()
1411 struct perf_evsel *counter, in sort_aggr_thread() argument
1427 val += perf_counts(counter->counts, cpu, thread)->val; in sort_aggr_thread()
1428 ena += perf_counts(counter->counts, cpu, thread)->ena; in sort_aggr_thread()
1429 run += perf_counts(counter->counts, cpu, thread)->run; in sort_aggr_thread()
1432 uval = val * counter->scale; in sort_aggr_thread()
1441 buf[i].counter = counter; in sort_aggr_thread()
1458 static void print_aggr_thread(struct perf_evsel *counter, char *prefix) in print_aggr_thread() argument
1461 int nthreads = thread_map__nr(counter->threads); in print_aggr_thread()
1462 int ncpus = cpu_map__nr(counter->cpus); in print_aggr_thread()
1466 buf = sort_aggr_thread(counter, nthreads, ncpus, &sorted_threads); in print_aggr_thread()
1478 printout(id, 0, buf[thread].counter, buf[thread].uval, in print_aggr_thread()
1482 printout(id, 0, buf[thread].counter, buf[thread].uval, in print_aggr_thread()
1495 static void counter_aggr_cb(struct perf_evsel *counter, void *data, in counter_aggr_cb() argument
1499 struct perf_stat_evsel *ps = counter->stats; in counter_aggr_cb()
1510 static void print_counter_aggr(struct perf_evsel *counter, char *prefix) in print_counter_aggr() argument
1516 if (!collect_data(counter, counter_aggr_cb, &cd)) in print_counter_aggr()
1522 uval = cd.avg * counter->scale; in print_counter_aggr()
1523 printout(-1, 0, counter, uval, prefix, cd.avg_running, cd.avg_enabled, in print_counter_aggr()
1529 static void counter_cb(struct perf_evsel *counter, void *data, in counter_cb() argument
1534 ad->val += perf_counts(counter->counts, ad->cpu, 0)->val; in counter_cb()
1535 ad->ena += perf_counts(counter->counts, ad->cpu, 0)->ena; in counter_cb()
1536 ad->run += perf_counts(counter->counts, ad->cpu, 0)->run; in counter_cb()
1543 static void print_counter(struct perf_evsel *counter, char *prefix) in print_counter() argument
1550 for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) { in print_counter()
1553 if (!collect_data(counter, counter_cb, &ad)) in print_counter()
1562 uval = val * counter->scale; in print_counter()
1563 printout(cpu, 0, counter, uval, prefix, run, ena, 1.0, in print_counter()
1574 struct perf_evsel *counter; in print_no_aggr_metric() local
1584 evlist__for_each_entry(evsel_list, counter) { in print_no_aggr_metric()
1585 if (is_duration_time(counter)) in print_no_aggr_metric()
1588 aggr_printout(counter, cpu, 0); in print_no_aggr_metric()
1591 val = perf_counts(counter->counts, cpu, 0)->val; in print_no_aggr_metric()
1592 ena = perf_counts(counter->counts, cpu, 0)->ena; in print_no_aggr_metric()
1593 run = perf_counts(counter->counts, cpu, 0)->run; in print_no_aggr_metric()
1595 uval = val * counter->scale; in print_no_aggr_metric()
1596 printout(cpu, 0, counter, uval, prefix, run, ena, 1.0, in print_no_aggr_metric()
1622 struct perf_evsel *counter; in print_metric_headers() local
1641 evlist__for_each_entry(evsel_list, counter) { in print_metric_headers()
1642 if (is_duration_time(counter)) in print_metric_headers()
1644 os.evsel = counter; in print_metric_headers()
1649 os.evsel = counter; in print_metric_headers()
1650 perf_stat__print_shadow_stats(counter, 0, in print_metric_headers()
1833 struct perf_evsel *counter; in print_counters() local
1862 evlist__for_each_entry(evsel_list, counter) { in print_counters()
1863 if (is_duration_time(counter)) in print_counters()
1865 print_aggr_thread(counter, prefix); in print_counters()
1869 evlist__for_each_entry(evsel_list, counter) { in print_counters()
1870 if (is_duration_time(counter)) in print_counters()
1872 print_counter_aggr(counter, prefix); in print_counters()
1881 evlist__for_each_entry(evsel_list, counter) { in print_counters()
1882 if (is_duration_time(counter)) in print_counters()
1884 print_counter(counter, prefix); in print_counters()
2607 struct perf_evsel *counter; in process_stat_round_event() local
2612 evlist__for_each_entry(evsel_list, counter) in process_stat_round_event()
2613 perf_stat_process_counter(&stat_config, counter); in process_stat_round_event()
2819 struct perf_evsel *counter; in setup_system_wide() local
2821 evlist__for_each_entry(evsel_list, counter) { in setup_system_wide()
2822 if (!counter->system_wide) in setup_system_wide()