bpf_counter_ops
struct bpf_counter_ops bpf_program_profiler_ops = {
struct bpf_counter_ops bperf_ops = {
extern struct bpf_counter_ops bperf_cgrp_ops;
return evsel->bpf_counter_ops == NULL;
return evsel->bpf_counter_ops->install_pe(evsel, cpu_map_idx, fd);
evsel->bpf_counter_ops = &bpf_program_profiler_ops;
evsel->bpf_counter_ops = &bperf_cgrp_ops;
evsel->bpf_counter_ops = &bperf_ops;
if (evsel->bpf_counter_ops)
return evsel->bpf_counter_ops->load(evsel, target);
return evsel->bpf_counter_ops->enable(evsel);
return evsel->bpf_counter_ops->disable(evsel);
return evsel->bpf_counter_ops->read(evsel);
evsel->bpf_counter_ops->destroy(evsel);
evsel->bpf_counter_ops = NULL;
struct bpf_counter_ops bperf_cgrp_ops = {
struct bpf_counter_ops *bpf_counter_ops;
struct bpf_counter_ops;
return evsel->bpf_counter_ops != NULL;
return evsel->bpf_counter_ops != NULL && list_empty(&evsel->bpf_counter_list);