bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next 00/14] libbpf: add unified bpf_prog_load() low-level API
@ 2021-10-30  4:59 Andrii Nakryiko
  2021-10-30  4:59 ` [PATCH bpf-next 01/14] bpftool: fix unistd.h include Andrii Nakryiko
                   ` (13 more replies)
  0 siblings, 14 replies; 25+ messages in thread
From: Andrii Nakryiko @ 2021-10-30  4:59 UTC (permalink / raw)
  To: bpf, ast, daniel; +Cc: andrii, kernel-team, Hengqi Chen

This patch set adds unified OPTS-based low-level bpf_prog_load() API for
loading BPF programs directly into kernel without utilizing libbpf's
bpf_object abstractions. This OPTS-based interface allows for future
extensions without breaking backwards or forward API and ABI compatibility.
Similar approach will be used for other low-level APIs that require extensive
sets of parameters, like BPF_MAP_CREATE command.

First half of the patch set adds libbpf API, cleans up internal usage of
to-be-deprecated APIs, etc. Second half cleans up and converts selftests away
from using deprecated APIs. See individual patches for more details.

Cc: Hengqi Chen <hengqi.chen@gmail.com>

Andrii Nakryiko (14):
  bpftool: fix unistd.h include
  libbpf: add bpf() syscall wrapper into public API
  libbpf: rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS
  libbpf: pass number of prog load attempts explicitly
  libbpf: unify low-level BPF_PROG_LOAD APIs into bpf_prog_load()
  libbpf: remove internal use of deprecated bpf_prog_load() variants
  libbpf: stop using to-be-deprecated APIs
  bpftool: stop using deprecated bpf_load_program()
  libbpf: remove deprecation attribute from struct bpf_prog_prep_result
  selftests/bpf: fix non-strict SEC() program sections
  selftests/bpf: convert legacy prog load APIs to bpf_prog_load()
  selftests/bpf: merge test_stub.c into testing_helpers.c
  selftests/bpf: use explicit bpf_prog_test_load() calls everywhere
  selftests/bpf: use explicit bpf_test_load_program() helper calls

 tools/bpf/bpftool/cgroup.c                    |   2 +-
 tools/bpf/bpftool/feature.c                   |   2 +-
 tools/lib/bpf/bpf.c                           | 242 +++++++++---------
 tools/lib/bpf/bpf.h                           | 104 +++++++-
 tools/lib/bpf/bpf_gen_internal.h              |   8 +-
 tools/lib/bpf/gen_loader.c                    |  30 +--
 tools/lib/bpf/libbpf.c                        | 177 +++++--------
 tools/lib/bpf/libbpf.h                        |   6 +-
 tools/lib/bpf/libbpf.map                      |   2 +
 tools/lib/bpf/libbpf_common.h                 |  14 +-
 tools/lib/bpf/libbpf_internal.h               |  31 ---
 tools/lib/bpf/libbpf_legacy.h                 |   1 +
 tools/lib/bpf/libbpf_probes.c                 |  20 +-
 tools/lib/bpf/xsk.c                           |  34 +--
 tools/testing/selftests/bpf/Makefile          |  38 +--
 .../selftests/bpf/flow_dissector_load.h       |   3 +-
 .../selftests/bpf/get_cgroup_id_user.c        |   5 +-
 .../testing/selftests/bpf/prog_tests/align.c  |  11 +-
 .../selftests/bpf/prog_tests/bpf_obj_id.c     |   2 +-
 .../bpf/prog_tests/cgroup_attach_autodetach.c |   2 +-
 .../bpf/prog_tests/cgroup_attach_multi.c      |   2 +-
 .../bpf/prog_tests/cgroup_attach_override.c   |   2 +-
 .../selftests/bpf/prog_tests/fexit_bpf2bpf.c  |   8 +-
 .../selftests/bpf/prog_tests/fexit_stress.c   |  33 +--
 .../prog_tests/flow_dissector_load_bytes.c    |   2 +-
 .../bpf/prog_tests/flow_dissector_reattach.c  |   4 +-
 .../bpf/prog_tests/get_stack_raw_tp.c         |   4 +-
 .../selftests/bpf/prog_tests/global_data.c    |   2 +-
 .../bpf/prog_tests/global_func_args.c         |   2 +-
 .../selftests/bpf/prog_tests/kfree_skb.c      |   2 +-
 .../selftests/bpf/prog_tests/l4lb_all.c       |   2 +-
 .../bpf/prog_tests/load_bytes_relative.c      |   2 +-
 .../selftests/bpf/prog_tests/map_lock.c       |   4 +-
 .../selftests/bpf/prog_tests/pkt_access.c     |   2 +-
 .../selftests/bpf/prog_tests/pkt_md_access.c  |   2 +-
 .../bpf/prog_tests/queue_stack_map.c          |   2 +-
 .../raw_tp_writable_reject_nbd_invalid.c      |  14 +-
 .../bpf/prog_tests/raw_tp_writable_test_run.c |  29 +--
 .../selftests/bpf/prog_tests/signal_pending.c |   2 +-
 .../selftests/bpf/prog_tests/skb_ctx.c        |   2 +-
 .../selftests/bpf/prog_tests/skb_helpers.c    |   2 +-
 .../selftests/bpf/prog_tests/sockopt.c        |  19 +-
 .../selftests/bpf/prog_tests/spinlock.c       |   4 +-
 .../selftests/bpf/prog_tests/stacktrace_map.c |   2 +-
 .../bpf/prog_tests/stacktrace_map_raw_tp.c    |   2 +-
 .../selftests/bpf/prog_tests/tailcalls.c      |  18 +-
 .../bpf/prog_tests/task_fd_query_rawtp.c      |   2 +-
 .../bpf/prog_tests/task_fd_query_tp.c         |   4 +-
 .../selftests/bpf/prog_tests/tcp_estats.c     |   2 +-
 .../bpf/prog_tests/tp_attach_query.c          |   2 +-
 tools/testing/selftests/bpf/prog_tests/xdp.c  |   2 +-
 .../bpf/prog_tests/xdp_adjust_tail.c          |   6 +-
 .../selftests/bpf/prog_tests/xdp_attach.c     |   6 +-
 .../selftests/bpf/prog_tests/xdp_info.c       |   2 +-
 .../selftests/bpf/prog_tests/xdp_perf.c       |   2 +-
 .../selftests/bpf/progs/fexit_bpf2bpf.c       |   2 +-
 tools/testing/selftests/bpf/progs/test_l4lb.c |   2 +-
 .../selftests/bpf/progs/test_l4lb_noinline.c  |   2 +-
 .../selftests/bpf/progs/test_map_lock.c       |   2 +-
 .../bpf/progs/test_queue_stack_map.h          |   2 +-
 .../selftests/bpf/progs/test_skb_ctx.c        |   2 +-
 .../selftests/bpf/progs/test_spin_lock.c      |   2 +-
 .../selftests/bpf/progs/test_tcp_estats.c     |   2 +-
 .../selftests/bpf/test_cgroup_storage.c       |   3 +-
 tools/testing/selftests/bpf/test_dev_cgroup.c |   3 +-
 .../selftests/bpf/test_lirc_mode2_user.c      |   6 +-
 tools/testing/selftests/bpf/test_lru_map.c    |   9 +-
 tools/testing/selftests/bpf/test_maps.c       |   7 +-
 tools/testing/selftests/bpf/test_sock.c       |  23 +-
 tools/testing/selftests/bpf/test_sock_addr.c  |  13 +-
 tools/testing/selftests/bpf/test_stub.c       |  44 ----
 tools/testing/selftests/bpf/test_sysctl.c     |  23 +-
 tools/testing/selftests/bpf/test_tag.c        |   3 +-
 .../selftests/bpf/test_tcpnotify_user.c       |   3 +-
 tools/testing/selftests/bpf/test_verifier.c   |  38 +--
 tools/testing/selftests/bpf/testing_helpers.c |  55 ++++
 tools/testing/selftests/bpf/testing_helpers.h |   6 +
 tools/testing/selftests/bpf/xdping.c          |   3 +-
 78 files changed, 620 insertions(+), 566 deletions(-)
 delete mode 100644 tools/testing/selftests/bpf/test_stub.c

-- 
2.30.2


^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2021-11-02  2:53 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-30  4:59 [PATCH bpf-next 00/14] libbpf: add unified bpf_prog_load() low-level API Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 01/14] bpftool: fix unistd.h include Andrii Nakryiko
2021-11-01 14:12   ` Hengqi Chen
2021-11-01 21:44     ` Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 02/14] libbpf: add bpf() syscall wrapper into public API Andrii Nakryiko
2021-11-01 16:00   ` Daniel Borkmann
2021-11-01 21:02     ` Andrii Nakryiko
2021-11-01 16:01   ` Hengqi Chen
2021-11-01 21:01     ` Andrii Nakryiko
2021-11-01 16:22   ` Alexei Starovoitov
2021-11-01 20:59     ` Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 03/14] libbpf: rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 04/14] libbpf: pass number of prog load attempts explicitly Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 05/14] libbpf: unify low-level BPF_PROG_LOAD APIs into bpf_prog_load() Andrii Nakryiko
2021-11-02  2:33   ` Alexei Starovoitov
2021-11-02  2:52     ` Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 06/14] libbpf: remove internal use of deprecated bpf_prog_load() variants Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 07/14] libbpf: stop using to-be-deprecated APIs Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 08/14] bpftool: stop using deprecated bpf_load_program() Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 09/14] libbpf: remove deprecation attribute from struct bpf_prog_prep_result Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 10/14] selftests/bpf: fix non-strict SEC() program sections Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 11/14] selftests/bpf: convert legacy prog load APIs to bpf_prog_load() Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 12/14] selftests/bpf: merge test_stub.c into testing_helpers.c Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 13/14] selftests/bpf: use explicit bpf_prog_test_load() calls everywhere Andrii Nakryiko
2021-10-30  4:59 ` [PATCH bpf-next 14/14] selftests/bpf: use explicit bpf_test_load_program() helper calls Andrii Nakryiko

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).