mbox series

[bpf-next,0/7] Auto-guess program type on bpf_object__open

Message ID 20191021033902.3856966-1-andriin@fb.com
Headers show
Series Auto-guess program type on bpf_object__open | expand

Message

Andrii Nakryiko Oct. 21, 2019, 3:38 a.m. UTC
This patch set's main goal is to teach bpf_object__open() (and its variants)
to automatically derive BPF program type/expected attach type from section
names, similarly to how bpf_prog_load() was doing it. This significantly
improves user experience by eliminating yet another
obvious-only-in-the-hindsight surprise, when using libbpf APIs.

There are a bunch of auxiliary clean-ups and improvements. E.g.,
bpf_program__get_type() and bpf_program__get_expected_attach_type() are added
for completeness and symmetry with corresponding setter APIs. Some clean up
and fixes in selftests/bpf are done as well.

Andrii Nakryiko (7):
  tools: sync if_link.h
  libbpf: add bpf_program__get_{type, expected_attach_type) APIs
  libbpf: add uprobe/uretprobe and tp/raw_tp section suffixes
  libbpf: teach bpf_object__open to guess program types
  selftests/bpf: make a copy of subtest name
  selftests/bpf: make reference_tracking test use subtests
  selftest/bpf: get rid of a bunch of explicit BPF program type setting

 tools/include/uapi/linux/if_link.h            |  2 +
 tools/lib/bpf/libbpf.c                        | 80 ++++++++++++-------
 tools/lib/bpf/libbpf.h                        |  5 ++
 tools/lib/bpf/libbpf.map                      |  2 +
 .../selftests/bpf/prog_tests/attach_probe.c   |  5 --
 .../selftests/bpf/prog_tests/core_reloc.c     |  1 -
 .../selftests/bpf/prog_tests/rdonly_maps.c    |  4 -
 .../bpf/prog_tests/reference_tracking.c       |  3 +-
 .../selftests/bpf/progs/test_sk_lookup_kern.c | 18 ++---
 tools/testing/selftests/bpf/test_maps.c       |  4 -
 tools/testing/selftests/bpf/test_progs.c      | 17 ++--
 11 files changed, 83 insertions(+), 58 deletions(-)

Comments

Daniel Borkmann Oct. 21, 2019, 12:55 p.m. UTC | #1
On Sun, Oct 20, 2019 at 08:38:55PM -0700, Andrii Nakryiko wrote:
> This patch set's main goal is to teach bpf_object__open() (and its variants)
> to automatically derive BPF program type/expected attach type from section
> names, similarly to how bpf_prog_load() was doing it. This significantly
> improves user experience by eliminating yet another
> obvious-only-in-the-hindsight surprise, when using libbpf APIs.
> 
> There are a bunch of auxiliary clean-ups and improvements. E.g.,
> bpf_program__get_type() and bpf_program__get_expected_attach_type() are added
> for completeness and symmetry with corresponding setter APIs. Some clean up
> and fixes in selftests/bpf are done as well.
> 
> Andrii Nakryiko (7):
>   tools: sync if_link.h
>   libbpf: add bpf_program__get_{type, expected_attach_type) APIs
>   libbpf: add uprobe/uretprobe and tp/raw_tp section suffixes
>   libbpf: teach bpf_object__open to guess program types
>   selftests/bpf: make a copy of subtest name
>   selftests/bpf: make reference_tracking test use subtests
>   selftest/bpf: get rid of a bunch of explicit BPF program type setting

Looks good, applied, thanks!