From: "Daniel Müller" <deso@posteo.net>
To: bpf@vger.kernel.org, ast@kernel.org, andrii@kernel.org,
daniel@iogearbox.net, kernel-team@fb.com, quentin@isovalent.com
Subject: [PATCH bpf-next 00/12] libbpf: Textual representation of enums
Date: Mon, 16 May 2022 17:35:28 +0000 [thread overview]
Message-ID: <20220516173540.3520665-1-deso@posteo.net> (raw)
This patch set introduces the means for querying a textual representation of
the following BPF related enum types:
- enum bpf_map_type
- enum bpf_prog_type
- enum bpf_attach_type
- enum bpf_link_type
To make that possible, we introduce a new public function for each of the types:
libbpf_bpf_<type>_type_str.
Having a way to query a textual representation has been asked for in the past
(by systemd, among others). Such representations can generally be useful in
tracing and logging contexts, among others. At this point, at least one client,
bpftool, maintains such a mapping manually, which is prone to get out of date as
new enum variants are introduced. libbpf is arguably best situated to keep this
list complete and up-to-date. This patch series adds BTF based tests to ensure
that exhaustiveness is upheld moving forward.
The libbpf provided textual representation can be inferred from the
corresponding enum variant name by removing the prefix and lowercasing the
remainder. E.g., BPF_PROG_TYPE_SOCKET_FILTER -> socket_filter. Unfortunately,
bpftool does not use such a programmatic approach for some of the
bpf_attach_type variants. We propose a work around keeping the existing behavior
for the time being in the patch titled "bpftool: Use
libbpf_bpf_attach_type_str".
The patch series is structured as follows:
- for each enumeration type in {bpf_prog_type, bpf_map_type, bpf_attach_type,
bpf_link_type}:
- we first introduce the corresponding public libbpf API function
- we then add BTF based self-tests
- we lastly adjust bpftool to use the libbpf provided functionality
Signed-off-by: Daniel Müller <deso@posteo.net>
Daniel Müller (12):
libbpf: Introduce libbpf_bpf_prog_type_str
selftests/bpf: Add test for libbpf_bpf_prog_type_str
bpftool: Use libbpf_bpf_prog_type_str
libbpf: Introduce libbpf_bpf_map_type_str
selftests/bpf: Add test for libbpf_bpf_map_type_str
bpftool: Use libbpf_bpf_map_type_str
libbpf: Introduce libbpf_bpf_attach_type_str
selftests/bpf: Add test for libbpf_bpf_attach_type_str
bpftool: Use libbpf_bpf_attach_type_str
libbpf: Introduce libbpf_bpf_link_type_str
selftests/bpf: Add test for libbpf_bpf_link_type_str
bpftool: Use libbpf_bpf_link_type_str
tools/bpf/bpftool/cgroup.c | 20 +-
tools/bpf/bpftool/common.c | 46 ----
tools/bpf/bpftool/feature.c | 87 +++++---
tools/bpf/bpftool/link.c | 61 +++---
tools/bpf/bpftool/main.h | 6 -
tools/bpf/bpftool/map.c | 82 +++----
tools/bpf/bpftool/prog.c | 51 +----
tools/lib/bpf/libbpf.c | 160 ++++++++++++++
tools/lib/bpf/libbpf.h | 36 ++++
tools/lib/bpf/libbpf.map | 4 +
.../selftests/bpf/prog_tests/libbpf_str.c | 201 ++++++++++++++++++
11 files changed, 539 insertions(+), 215 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/libbpf_str.c
--
2.30.2
next reply other threads:[~2022-05-16 17:35 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-16 17:35 Daniel Müller [this message]
2022-05-16 17:35 ` [PATCH bpf-next 01/12] libbpf: Introduce libbpf_bpf_prog_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 02/12] selftests/bpf: Add test for libbpf_bpf_prog_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 03/12] bpftool: Use libbpf_bpf_prog_type_str Daniel Müller
2022-05-17 14:18 ` Quentin Monnet
2022-05-17 19:09 ` Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 04/12] libbpf: Introduce libbpf_bpf_map_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 05/12] selftests/bpf: Add test for libbpf_bpf_map_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 06/12] bpftool: Use libbpf_bpf_map_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 07/12] libbpf: Introduce libbpf_bpf_attach_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 08/12] selftests/bpf: Add test for libbpf_bpf_attach_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 09/12] bpftool: Use libbpf_bpf_attach_type_str Daniel Müller
2022-05-16 23:41 ` Andrii Nakryiko
2022-05-17 14:18 ` Quentin Monnet
2022-05-17 18:54 ` Daniel Müller
2022-05-18 13:31 ` Quentin Monnet
2022-05-18 23:54 ` Daniel Müller
2022-05-19 3:08 ` Dave Thaler
2022-05-16 17:35 ` [PATCH bpf-next 10/12] libbpf: Introduce libbpf_bpf_link_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 11/12] selftests/bpf: Add test for libbpf_bpf_link_type_str Daniel Müller
2022-05-16 17:35 ` [PATCH bpf-next 12/12] bpftool: Use libbpf_bpf_link_type_str Daniel Müller
2022-05-16 23:43 ` [PATCH bpf-next 00/12] libbpf: Textual representation of enums Andrii Nakryiko
2022-05-17 18:59 ` Daniel Müller
2022-05-17 6:42 ` Yonghong Song
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220516173540.3520665-1-deso@posteo.net \
--to=deso@posteo.net \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=quentin@isovalent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox