Lines Matching refs:counter

260 static int evsel__write_stat_event(struct evsel *counter, int cpu_map_idx, u32 thread,  in evsel__write_stat_event()  argument
263 struct perf_sample_id *sid = SID(counter, cpu_map_idx, thread); in evsel__write_stat_event()
264 struct perf_cpu cpu = perf_cpu_map__cpu(evsel__cpus(counter), cpu_map_idx); in evsel__write_stat_event()
270 static int read_single_counter(struct evsel *counter, int cpu_map_idx, int thread) in read_single_counter() argument
272 int err = evsel__read_counter(counter, cpu_map_idx, thread); in read_single_counter()
279 (evsel__tool_event(counter) == TOOL_PMU__EVENT_USER_TIME || in read_single_counter()
280 evsel__tool_event(counter) == TOOL_PMU__EVENT_SYSTEM_TIME)) { in read_single_counter()
283 perf_counts(counter->counts, cpu_map_idx, thread); in read_single_counter()
285 start_time = xyarray__entry(counter->start_times, cpu_map_idx, thread); in read_single_counter()
286 if (evsel__tool_event(counter) == TOOL_PMU__EVENT_USER_TIME) in read_single_counter()
301 static int read_counter_cpu(struct evsel *counter, int cpu_map_idx) in read_counter_cpu() argument
306 if (!counter->supported) in read_counter_cpu()
312 count = perf_counts(counter->counts, cpu_map_idx, thread); in read_counter_cpu()
318 if (!perf_counts__is_loaded(counter->counts, cpu_map_idx, thread) && in read_counter_cpu()
319 read_single_counter(counter, cpu_map_idx, thread)) { in read_counter_cpu()
320 counter->counts->scaled = -1; in read_counter_cpu()
321 perf_counts(counter->counts, cpu_map_idx, thread)->ena = 0; in read_counter_cpu()
322 perf_counts(counter->counts, cpu_map_idx, thread)->run = 0; in read_counter_cpu()
326 perf_counts__set_loaded(counter->counts, cpu_map_idx, thread, false); in read_counter_cpu()
329 if (evsel__write_stat_event(counter, cpu_map_idx, thread, count)) { in read_counter_cpu()
338 evsel__name(counter), in read_counter_cpu()
339 perf_cpu_map__cpu(evsel__cpus(counter), in read_counter_cpu()
364 struct evsel *counter = evlist_cpu_itr.evsel; in read_affinity_counters() local
366 if (evsel__is_bpf(counter)) in read_affinity_counters()
369 if (!counter->err) in read_affinity_counters()
370 counter->err = read_counter_cpu(counter, evlist_cpu_itr.cpu_map_idx); in read_affinity_counters()
380 struct evsel *counter; in read_bpf_map_counters() local
383 evlist__for_each_entry(evsel_list, counter) { in read_bpf_map_counters()
384 if (!evsel__is_bpf(counter)) in read_bpf_map_counters()
387 err = bpf_counter__read(counter); in read_bpf_map_counters()
406 struct evsel *counter; in process_counters() local
408 evlist__for_each_entry(evsel_list, counter) { in process_counters()
409 if (counter->err) in process_counters()
410 pr_debug("failed to read counter %s\n", counter->name); in process_counters()
411 if (counter->err == 0 && perf_stat_process_counter(&stat_config, counter)) in process_counters()
412 pr_warning("failed to process counter %s\n", counter->name); in process_counters()
413 counter->err = 0; in process_counters()
475 struct evsel *counter; in disable_counters() local
483 evlist__for_each_entry(evsel_list, counter) in disable_counters()
484 bpf_counter__disable(counter); in disable_counters()
503 static bool evsel__should_store_id(struct evsel *counter) in evsel__should_store_id() argument
505 return STAT_RECORD || counter->core.attr.read_format & PERF_FORMAT_ID; in evsel__should_store_id()
616 static enum counter_recovery stat_handle_error(struct evsel *counter) in stat_handle_error() argument
627 evsel__name(counter)); in stat_handle_error()
628 counter->supported = false; in stat_handle_error()
633 counter->errored = true; in stat_handle_error()
635 if ((evsel__leader(counter) != counter) || in stat_handle_error()
636 !(counter->core.leader->nr_members > 1)) in stat_handle_error()
638 } else if (evsel__fallback(counter, &target, errno, msg, sizeof(msg))) { in stat_handle_error()
654 } else if (counter->skippable) { in stat_handle_error()
657 evsel__name(counter)); in stat_handle_error()
658 counter->supported = false; in stat_handle_error()
659 counter->errored = true; in stat_handle_error()
666 evsel__name(counter)); in stat_handle_error()
668 counter->supported = false; in stat_handle_error()
669 counter->errored = true; in stat_handle_error()
671 if ((evsel__leader(counter) != counter) || in stat_handle_error()
672 !(counter->core.leader->nr_members > 1)) in stat_handle_error()
676 evsel__open_strerror(counter, &target, errno, msg, sizeof(msg)); in stat_handle_error()
692 struct evsel *counter; in __run_perf_stat() local
718 evlist__for_each_entry(evsel_list, counter) { in __run_perf_stat()
719 counter->reset_group = false; in __run_perf_stat()
720 if (bpf_counter__load(counter, &target)) { in __run_perf_stat()
724 if (!(evsel__is_bperf(counter))) in __run_perf_stat()
731 counter = evlist_cpu_itr.evsel; in __run_perf_stat()
740 if (counter->reset_group || counter->errored) in __run_perf_stat()
742 if (evsel__is_bperf(counter)) in __run_perf_stat()
745 if (create_perf_stat_counter(counter, &stat_config, &target, in __run_perf_stat()
756 evsel__leader(counter) != counter && in __run_perf_stat()
757 counter->weak_group) { in __run_perf_stat()
758 evlist__reset_weak_group(evsel_list, counter, false); in __run_perf_stat()
759 assert(counter->reset_group); in __run_perf_stat()
764 switch (stat_handle_error(counter)) { in __run_perf_stat()
777 counter->supported = true; in __run_perf_stat()
788 counter = evlist_cpu_itr.evsel; in __run_perf_stat()
790 if (!counter->reset_group && !counter->errored) in __run_perf_stat()
793 perf_evsel__close_cpu(&counter->core, evlist_cpu_itr.cpu_map_idx); in __run_perf_stat()
797 counter = evlist_cpu_itr.evsel; in __run_perf_stat()
799 if (!counter->reset_group) in __run_perf_stat()
802 pr_debug2("reopening weak %s\n", evsel__name(counter)); in __run_perf_stat()
803 if (create_perf_stat_counter(counter, &stat_config, &target, in __run_perf_stat()
806 switch (stat_handle_error(counter)) { in __run_perf_stat()
818 counter->supported = true; in __run_perf_stat()
824 evlist__for_each_entry(evsel_list, counter) { in __run_perf_stat()
825 if (!counter->supported) { in __run_perf_stat()
826 perf_evsel__free_fd(&counter->core); in __run_perf_stat()
830 l = strlen(counter->unit); in __run_perf_stat()
834 if (evsel__should_store_id(counter) && in __run_perf_stat()
835 evsel__store_ids(counter, evsel_list)) { in __run_perf_stat()
841 if (evlist__apply_filters(evsel_list, &counter, &target)) { in __run_perf_stat()
843 counter->filter, evsel__name(counter), errno, in __run_perf_stat()
2314 struct evsel *counter; in setup_system_wide() local
2316 evlist__for_each_entry(evsel_list, counter) { in setup_system_wide()
2317 if (!counter->core.requires_cpu && in setup_system_wide()
2318 !evsel__name_is(counter, "duration_time")) { in setup_system_wide()