This set introduces BPF_F_PRESERVE_ELEMS to perf event array for better sharing of perf event. By default, perf event array removes the perf event when the map fd used to add the event is closed. With BPF_F_PRESERVE_ELEMS set, however, the perf event will stay in the array until it is removed, or the map is closed. --- Changes v3 => v5: 1. Clean up in selftest. (Alexei) Changes v2 => v3: 1. Move perf_event_fd_array_map_free() to avoid unnecessary forward declaration. (Daniel) Changes v1 => v2: 1. Rename the flag as BPF_F_PRESERVE_ELEMS. (Alexei, Daniel) 2. Simplify the code and selftest. (Daniel, Alexei) Song Liu (2): bpf: introduce BPF_F_PRESERVE_ELEMS for perf event array selftests/bpf: add tests for BPF_F_PRESERVE_ELEMS include/uapi/linux/bpf.h | 3 + kernel/bpf/arraymap.c | 19 +++++- tools/include/uapi/linux/bpf.h | 3 + .../bpf/prog_tests/pe_preserve_elems.c | 66 +++++++++++++++++++ .../bpf/progs/test_pe_preserve_elems.c | 42 ++++++++++++ 5 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/pe_preserve_elems.c create mode 100644 tools/testing/selftests/bpf/progs/test_pe_preserve_elems.c -- 2.24.1