Lines Matching defs:counter
14 Performance counter stats for './hackbench 10':
306 static int evsel__write_stat_event(struct evsel *counter, u32 cpu, u32 thread,
309 struct perf_sample_id *sid = SID(counter, cpu, thread);
315 static int read_single_counter(struct evsel *counter, int cpu,
318 if (counter->tool_event == PERF_TOOL_DURATION_TIME) {
321 perf_counts(counter->counts, cpu, thread);
326 return evsel__read_counter(counter, cpu, thread);
330 * Read out the results of a single counter:
333 static int read_counter_cpu(struct evsel *counter, struct timespec *rs, int cpu)
338 if (!counter->supported)
341 if (counter->core.system_wide)
347 count = perf_counts(counter->counts, cpu, thread);
353 if (!perf_counts__is_loaded(counter->counts, cpu, thread) &&
354 read_single_counter(counter, cpu, thread, rs)) {
355 counter->counts->scaled = -1;
356 perf_counts(counter->counts, cpu, thread)->ena = 0;
357 perf_counts(counter->counts, cpu, thread)->run = 0;
361 perf_counts__set_loaded(counter->counts, cpu, thread, false);
364 if (evsel__write_stat_event(counter, cpu, thread, count)) {
373 evsel__name(counter),
384 struct evsel *counter;
399 evlist__for_each_entry(evsel_list, counter) {
400 if (evsel__cpu_iter_skip(counter, cpu))
402 if (!counter->err) {
403 counter->err = read_counter_cpu(counter, rs,
404 counter->cpu_iter - 1);
414 struct evsel *counter;
419 evlist__for_each_entry(evsel_list, counter) {
420 if (counter->err)
421 pr_debug("failed to read counter %s\n", counter->name);
422 if (counter->err == 0 && perf_stat_process_counter(&stat_config, counter))
423 pr_warning("failed to process counter %s\n", counter->name);
424 counter->err = 0;
547 static bool evsel__should_store_id(struct evsel *counter)
549 return STAT_RECORD || counter->core.attr.read_format & PERF_FORMAT_ID;
661 static enum counter_recovery stat_handle_error(struct evsel *counter)
673 evsel__name(counter));
674 counter->supported = false;
676 * errored is a sticky flag that means one of the counter's
679 counter->errored = true;
681 if ((counter->leader != counter) ||
682 !(counter->leader->core.nr_members > 1))
684 } else if (evsel__fallback(counter, errno, msg, sizeof(msg))) {
702 evsel__open_strerror(counter, &target, errno, msg, sizeof(msg));
717 struct evsel *counter;
744 evlist__for_each_entry(evsel_list, counter) {
745 if (evsel__cpu_iter_skip(counter, cpu))
747 if (counter->reset_group || counter->errored)
750 if (create_perf_stat_counter(counter, &stat_config, &target,
751 counter->cpu_iter - 1) < 0) {
761 counter->leader != counter &&
762 counter->weak_group) {
763 perf_evlist__reset_weak_group(evsel_list, counter, false);
764 assert(counter->reset_group);
769 switch (stat_handle_error(counter)) {
781 counter->supported = true;
794 evlist__for_each_entry(evsel_list, counter) {
795 if (!counter->reset_group && !counter->errored)
797 if (evsel__cpu_iter_skip_no_inc(counter, cpu))
799 perf_evsel__close_cpu(&counter->core, counter->cpu_iter);
802 evlist__for_each_entry(evsel_list, counter) {
803 if (!counter->reset_group && !counter->errored)
805 if (evsel__cpu_iter_skip(counter, cpu))
807 if (!counter->reset_group)
810 pr_debug2("reopening weak %s\n", evsel__name(counter));
811 if (create_perf_stat_counter(counter, &stat_config, &target,
812 counter->cpu_iter - 1) < 0) {
814 switch (stat_handle_error(counter)) {
825 counter->supported = true;
831 evlist__for_each_entry(evsel_list, counter) {
832 if (!counter->supported) {
833 perf_evsel__free_fd(&counter->core);
837 l = strlen(counter->unit);
841 if (evsel__should_store_id(counter) &&
842 evsel__store_ids(counter, evsel_list))
846 if (perf_evlist__apply_filters(evsel_list, &counter)) {
848 counter->filter, evsel__name(counter), errno,
1091 "put the counters into a counter group"),
1093 "Use --no-scale to disable counter scaling for multiplexing"),
1095 "be more verbose (show counter open errors, etc)"),
1253 struct evsel *counter;
1255 evlist__for_each_entry(evsel_list, counter) {
1256 if (counter->percore)
1850 struct evsel *counter;
1855 evlist__for_each_entry(evsel_list, counter)
1856 perf_stat_process_counter(&stat_config, counter);
2037 struct evsel *counter;
2039 evlist__for_each_entry(evsel_list, counter) {
2040 if (!counter->core.system_wide &&
2041 strcmp(counter->name, "duration_time")) {