]> git.baikalelectronics.ru Git - kernel.git/commit
selftests/bpf: Add basic USDT selftests
authorAndrii Nakryiko <andrii@kernel.org>
Mon, 4 Apr 2022 23:42:01 +0000 (16:42 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 5 Apr 2022 20:16:08 +0000 (13:16 -0700)
commit56856d037e1a43fe415cac8e12cff5975e06a8b0
tree91ff5442d921edd9026413e555e84f126f1a2373
parent2d8aaa0b058c0731a0fb28e46898141c3d480061
selftests/bpf: Add basic USDT selftests

Add semaphore-based USDT to test_progs itself and write basic tests to
valicate both auto-attachment and manual attachment logic, as well as
BPF-side functionality.

Also add subtests to validate that libbpf properly deduplicates USDT
specs and handles spec overflow situations correctly, as well as proper
"rollback" of partially-attached multi-spec USDT.

BPF-side of selftest intentionally consists of two files to validate
that usdt.bpf.h header can be included from multiple source code files
that are subsequently linked into final BPF object file without causing
any symbol duplication or other issues. We are validating that __weak
maps and bpf_usdt_xxx() API functions defined in usdt.bpf.h do work as
intended.

USDT selftests utilize sys/sdt.h header that on Ubuntu systems comes
from systemtap-sdt-devel package. But to simplify everyone's life,
including CI but especially casual contributors to bpf/bpf-next that
are trying to build selftests, I've checked in sys/sdt.h header from [0]
directly. This way it will work on all architectures and distros without
having to figure it out for every relevant combination and adding any
extra implicit package dependencies.

  [0] https://sourceware.org/git?p=systemtap.git;a=blob_plain;f=includes/sys/sdt.h;h=ca0162b4dc57520b96638c8ae79ad547eb1dd3a1;hb=HEAD

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
Acked-by: Dave Marchevsky <davemarchevsky@fb.com>
Link: https://lore.kernel.org/bpf/20220404234202.331384-7-andrii@kernel.org
tools/testing/selftests/bpf/Makefile
tools/testing/selftests/bpf/prog_tests/usdt.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/test_usdt.c [new file with mode: 0644]
tools/testing/selftests/bpf/progs/test_usdt_multispec.c [new file with mode: 0644]
tools/testing/selftests/bpf/sdt-config.h [new file with mode: 0644]
tools/testing/selftests/bpf/sdt.h [new file with mode: 0644]