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. Patch #5 updates README to mention perf_buffer_ prefix. v4->v5: - initialize perf_buffer_raw_opts in bpftool map event_pipe (Jakub); - add perf_buffer_ to README; v3->v4: - fixed bpftool event_pipe cmd error handling (Jakub); 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 (5): 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 libbpf: add perf_buffer_ prefix to README tools/bpf/bpftool/map_perf_ring.c | 201 +++------ tools/lib/bpf/README.rst | 3 +- 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 | 25 ++ 7 files changed, 628 insertions(+), 145 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