From: Andrii Nakryiko <andriin@fb.com> To: <bpf@vger.kernel.org>, <netdev@vger.kernel.org>, <ast@fb.com>, <daniel@iogearbox.net> Cc: <andrii.nakryiko@gmail.com>, <kernel-team@fb.com>, Andrii Nakryiko <andriin@fb.com> Subject: [PATCH bpf-next 0/2] Add new-style bpf_object__open APIs Date: Thu, 3 Oct 2019 20:00:56 -0700 [thread overview] Message-ID: <20191004030058.2248514-1-andriin@fb.com> (raw) Add bpf_object__open_file() and bpf_object__open_mem() APIs that use a new approach to providing future-proof non-ABI-breaking API changes. It relies on APIs accepting optional self-describing "opts" struct, containing its own size, filled out and provided by potentially outdated (as well as newer-than-libbpf) user application. A set of internal helper macros (OPTS_VALID, OPTS_HAS, and OPTS_GET) streamline and simplify a graceful handling forward and backward compatibility for user applications dynamically linked against different versions of libbpf shared library. Users of libbpf are provided with convenience macro LIBBPF_OPTS that takes care of populating correct structure size and zero-initializes options struct, which helps avoid obscure issues of unitialized padding. Uninitialized padding in a struct might turn into garbage-populated new fields understood by future versions of libbpf. Andrii Nakryiko (2): libbpf: stop enforcing kern_version, populate it for users libbpf: add bpf_object__open_{file,mem} w/ extensible opts tools/lib/bpf/libbpf.c | 128 +++++++++--------- tools/lib/bpf/libbpf.h | 37 ++++- tools/lib/bpf/libbpf.map | 3 + tools/lib/bpf/libbpf_internal.h | 31 +++++ .../selftests/bpf/progs/test_attach_probe.c | 1 - .../bpf/progs/test_get_stack_rawtp.c | 1 - .../selftests/bpf/progs/test_perf_buffer.c | 1 - .../selftests/bpf/progs/test_stacktrace_map.c | 1 - 8 files changed, 131 insertions(+), 72 deletions(-) -- 2.17.1
next reply other threads:[~2019-10-04 3:01 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-10-04 3:00 Andrii Nakryiko [this message] 2019-10-04 3:00 ` [PATCH bpf-next 1/2] libbpf: stop enforcing kern_version, populate it for users Andrii Nakryiko 2019-10-04 14:05 ` John Fastabend 2019-10-04 14:32 ` Andrii Nakryiko 2019-10-04 14:36 ` Alexei Starovoitov 2019-10-04 14:55 ` John Fastabend 2019-10-04 15:07 ` Andrii Nakryiko 2019-10-04 15:59 ` John Fastabend 2019-10-18 14:49 ` John Fastabend 2019-10-04 3:00 ` [PATCH bpf-next 2/2] libbpf: add bpf_object__open_{file,mem} w/ extensible opts Andrii Nakryiko
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=20191004030058.2248514-1-andriin@fb.com \ --to=andriin@fb.com \ --cc=andrii.nakryiko@gmail.com \ --cc=ast@fb.com \ --cc=bpf@vger.kernel.org \ --cc=daniel@iogearbox.net \ --cc=kernel-team@fb.com \ --cc=netdev@vger.kernel.org \ --subject='Re: [PATCH bpf-next 0/2] Add new-style bpf_object__open APIs' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).