This patchset adds a high-level API for setting up and polling perf buffers associated with BPF_MAP_TYPE_PERF_EVENT_ARRAY map. Details of APIs are described in corresponding commit. Patch #1 adds a set of APIs to set up and work with perf buffer. Patch #2 enhances libbpf to support auto-setting PERF_EVENT_ARRAY map size. Patch #3 adds test. Patch #4 converts bpftool map event_pipe to new API. v2->v3: - added perf_buffer__new_raw for more low-level control; - converted bpftool map event_pipe to new API (Daniel); - fixed bug with error handling in create_maps (Song); v1->v2: - add auto-sizing of PERF_EVENT_ARRAY maps; Andrii Nakryiko (4): libbpf: add perf buffer API libbpf: auto-set PERF_EVENT_ARRAY size to number of CPUs selftests/bpf: test perf buffer API tools/bpftool: switch map event_pipe to libbpf's perf_buffer tools/bpf/bpftool/map_perf_ring.c | 207 +++------ tools/lib/bpf/libbpf.c | 397 +++++++++++++++++- tools/lib/bpf/libbpf.h | 49 +++ tools/lib/bpf/libbpf.map | 4 + .../selftests/bpf/prog_tests/perf_buffer.c | 94 +++++ .../selftests/bpf/progs/test_perf_buffer.c | 29 ++ 6 files changed, 634 insertions(+), 146 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/perf_buffer.c create mode 100644 tools/testing/selftests/bpf/progs/test_perf_buffer.c -- 2.17.1