linux/tools/testing/selftests/bpf/prog_tests
Andrii Nakryiko dca5612f8e libbpf: Add perf_buffer APIs for better integration with outside epoll loop
Add a set of APIs to perf_buffer manage to allow applications to integrate
perf buffer polling into existing epoll-based infrastructure. One example is
applications using libevent already and wanting to plug perf_buffer polling,
instead of relying on perf_buffer__poll() and waste an extra thread to do it.
But perf_buffer is still extremely useful to set up and consume perf buffer
rings even for such use cases.

So to accomodate such new use cases, add three new APIs:
  - perf_buffer__buffer_cnt() returns number of per-CPU buffers maintained by
    given instance of perf_buffer manager;
  - perf_buffer__buffer_fd() returns FD of perf_event corresponding to
    a specified per-CPU buffer; this FD is then polled independently;
  - perf_buffer__consume_buffer() consumes data from single per-CPU buffer,
    identified by its slot index.

To support a simpler, but less efficient, way to integrate perf_buffer into
external polling logic, also expose underlying epoll FD through
perf_buffer__epoll_fd() API. It will need to be followed by
perf_buffer__poll(), wasting extra syscall, or perf_buffer__consume(), wasting
CPU to iterate buffers with no data. But could be simpler and more convenient
for some cases.

These APIs allow for great flexiblity, but do not sacrifice general usability
of perf_buffer.

Also exercise and check new APIs in perf_buffer selftest.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
Link: https://lore.kernel.org/bpf/20200821165927.849538-1-andriin@fb.com
2020-08-21 14:26:55 -07:00
..
.gitignore
align.c selftests/bpf: Move test_align under test_progs 2020-05-16 01:18:14 +02:00
attach_probe.c
autoload.c selftests/bpf: Test auto-load disabling logic for BPF programs 2020-06-28 10:06:53 -07:00
bpf_iter.c tools/bpf: Support new uapi for map element bpf iterator 2020-08-06 16:39:14 -07:00
bpf_obj_id.c selftest/bpf: Fix compilation warnings in 32-bit mode 2020-08-13 16:45:41 -07:00
bpf_tcp_ca.c
bpf_verif_scale.c
btf_dump.c selftests/bpf: Fix btf_dump test cases on 32-bit arches 2020-08-13 16:45:41 -07:00
btf_map_in_map.c selftests/bpf: Extend map-in-map selftest to detect memory leaks 2020-07-30 01:30:26 +02:00
cg_storage_multi.c selftests/bpf: Don't destroy failed link 2020-07-31 00:43:49 +02:00
cgroup_attach_autodetach.c
cgroup_attach_multi.c bpf: cgroup: Allow multi-attach program to replace itself 2020-06-09 11:21:43 -07:00
cgroup_attach_override.c
cgroup_link.c selftests/bpf: Add link detach tests for cgroup, netns, and xdp bpf_links 2020-08-01 20:38:28 -07:00
cgroup_skb_sk_lookup.c bpf: selftests: A few improvements to network_helpers.c 2020-07-02 16:09:01 +02:00
cls_redirect.c selftests/bpf: Add cls_redirect classifier 2020-04-26 10:00:36 -07:00
connect_force_port.c bpf: selftests: A few improvements to network_helpers.c 2020-07-02 16:09:01 +02:00
core_extern.c selftest/bpf: Fix compilation warnings in 32-bit mode 2020-08-13 16:45:41 -07:00
core_reloc.c selftests/bpf: Add tests for ENUMVAL_EXISTS/ENUMVAL_VALUE relocations 2020-08-19 14:19:39 -07:00
core_retro.c selftests/bpf: Fix spurious test failures in core_retro selftest 2020-08-01 23:10:42 -07:00
cpu_mask.c
enable_stats.c bpf: Add selftest for BPF_ENABLE_STATS 2020-05-01 10:36:32 -07:00
endian.c selftests/bpf: Add byte swapping selftest 2020-07-01 09:06:12 +02:00
fentry_fexit.c bpf: Add tests for PTR_TO_BTF_ID vs. null comparison 2020-06-30 22:21:29 +02:00
fentry_test.c
fexit_bpf2bpf.c selftest/bpf: Fix compilation warnings in 32-bit mode 2020-08-13 16:45:41 -07:00
fexit_stress.c
fexit_test.c
flow_dissector.c selftest/bpf: Fix compilation warnings in 32-bit mode 2020-08-13 16:45:41 -07:00
flow_dissector_load_bytes.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
flow_dissector_reattach.c selftests: bpf: Pass program and target_fd in flow_dissector_reattach 2020-06-30 10:46:39 -07:00
get_stack_raw_tp.c
get_stackid_cannot_attach.c selftests/bpf: Add get_stackid_cannot_attach 2020-07-25 20:16:35 -07:00
global_data.c selftest/bpf: Fix compilation warnings in 32-bit mode 2020-08-13 16:45:41 -07:00
global_data_init.c
hashmap.c selftests/bpf: Convert test_hashmap into test_progs test 2020-04-28 19:48:05 -07:00
kfree_skb.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
ksyms.c selftests/bpf: Add __ksym extern selftest 2020-06-22 17:01:48 -07:00
l4lb_all.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
link_pinning.c
load_bytes_relative.c bpf: selftests: A few improvements to network_helpers.c 2020-07-02 16:09:01 +02:00
map_lock.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
map_ptr.c selftests/bpf: Test access to bpf map pointer 2020-06-22 22:22:59 +02:00
mmap.c selftests/bpf: Fix segmentation fault in test_progs 2020-08-11 15:36:45 +02:00
modify_return.c
ns_current_pid_tgid.c selftests/bpf: Fix bpf_link leak in ns_current_pid_tgid selftest 2020-04-28 19:48:05 -07:00
obj_name.c
perf_branches.c
perf_buffer.c libbpf: Add perf_buffer APIs for better integration with outside epoll loop 2020-08-21 14:26:55 -07:00
perf_event_stackmap.c selftests/bpf: Add callchain_stackid 2020-07-25 20:16:35 -07:00
pinning.c
pkt_access.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
pkt_md_access.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
probe_user.c
prog_run_xattr.c selftest/bpf: Fix compilation warnings in 32-bit mode 2020-08-13 16:45:41 -07:00
queue_stack_map.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
raw_tp_writable_reject_nbd_invalid.c
raw_tp_writable_test_run.c
rdonly_maps.c
reference_tracking.c
resolve_btfids.c bpf: Add BTF_ID_LIST_GLOBAL in btf_ids.h 2020-07-21 13:26:26 -07:00
ringbuf.c selftests/bpf: Fix ringbuf selftest sample counting undeterminism 2020-06-08 16:00:42 +02:00
ringbuf_multi.c selftests/bpf: Add BPF ringbuf selftests 2020-06-01 14:38:22 -07:00
section_names.c libbpf: Add support for BPF XDP link 2020-07-25 20:37:02 -07:00
select_reuseport.c
send_signal.c bpf: Fix compilation warning of selftests 2020-08-06 16:58:42 -07:00
send_signal_sched_switch.c
signal_pending.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
sk_assign.c selftests/bpf: Fix two minor compilation warnings reported by GCC 4.9 2020-08-20 16:45:09 +02:00
sk_lookup.c selftests/bpf: Fix v4_to_v6 in sk_lookup 2020-08-11 15:36:51 +02:00
skb_ctx.c selftest/bpf: Fix compilation warnings in 32-bit mode 2020-08-13 16:45:41 -07:00
skb_helpers.c bpf, selftests: Test probe_* helpers from SCHED_CLS 2020-06-01 14:38:21 -07:00
skeleton.c tools/bpftool: Strip away modifiers from global variables 2020-07-13 17:07:43 -07:00
sockmap_basic.c bpf, selftests: Add sk_msg helpers load and attach test 2020-06-01 14:38:20 -07:00
sockmap_ktls.c
sockmap_listen.c
sockopt.c
sockopt_inherit.c selftests/bpf: Fix possible hang in sockopt_inherit 2020-07-16 20:57:09 +02:00
sockopt_multi.c
sockopt_sk.c selftests/bpf: Make sure optvals > PAGE_SIZE are bypassed 2020-06-17 10:54:05 -07:00
spinlock.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
stacktrace_build_id.c
stacktrace_build_id_nmi.c bpf: Fix compilation warning of selftests 2020-08-06 16:58:42 -07:00
stacktrace_map.c
stacktrace_map_raw_tp.c
tailcalls.c
task_fd_query_rawtp.c
task_fd_query_tp.c
tcp_estats.c
tcp_rtt.c bpf: selftests: A few improvements to network_helpers.c 2020-07-02 16:09:01 +02:00
test_bpffs.c selftests/bpf: Add bpffs preload test. 2020-08-20 16:02:36 +02:00
test_global_funcs.c
test_lsm.c bpf, lsm: Fix the file_mprotect LSM test. 2020-04-02 19:42:52 -07:00
test_overhead.c selftest/bpf: Fmod_ret prog and implement test_overhead as part of bench 2020-05-13 12:19:38 -07:00
tp_attach_query.c
trace_printk.c selftests/bpf: Add selftests verifying bpf_trace_printk() behaviour 2020-07-13 16:55:49 -07:00
trampoline_count.c
udp_limit.c selftests/bpf: Test BPF_CGROUP_INET_SOCK_RELEASE 2020-07-08 01:07:36 +02:00
varlen.c selftests/bpf: Make test_varlen work with 32-bit user-space arch 2020-08-13 16:45:41 -07:00
vmlinux.c
xdp.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
xdp_adjust_tail.c selftests/bpf: Xdp_adjust_tail add grow tail tests 2020-05-14 21:21:57 -07:00
xdp_attach.c selftests/bpf: Check for correct program attach/detach in xdp_attach test 2020-04-15 13:26:08 +02:00
xdp_bpf2bpf.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
xdp_cpumap_attach.c selftest: Add tests for XDP programs in CPUMAP entries 2020-07-16 17:00:32 +02:00
xdp_devmap_attach.c bpf: Selftests and tools use struct bpf_devmap_val from uapi 2020-06-09 11:36:19 -07:00
xdp_info.c selftests/bpf: Add test for bpf_get_link_xdp_id 2020-04-08 01:35:24 +02:00
xdp_link.c selftests/bpf: Add link detach tests for cgroup, netns, and xdp bpf_links 2020-08-01 20:38:28 -07:00
xdp_noinline.c selftests/bpf: Move existing common networking parts into network_helpers 2020-05-09 00:48:20 +02:00
xdp_perf.c