All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API
@ 2021-12-30 20:40 Christy Lee
  2021-12-30 20:40 ` [PATCH bpf-next 1/3] libbpf: deprecate bpf_object__open() API Christy Lee
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Christy Lee @ 2021-12-30 20:40 UTC (permalink / raw)
  To: andrii, acme; +Cc: christyc.y.lee, bpf, kernel-team, ast, Christy Lee

Deprecate bpf_object__open(), bpf_object__open_buffer(), and
bpf_object__open_xattr() in favor of bpf_object__open_file() and
bpf_object__open_mem().

[0] Closes: https://github.com/libbpf/libbpf/issues/287

Christy Lee (3):
  libbpf: deprecate bpf_object__open() API
  libbpf: deprecate bpf_object__open_buffer() API
  libbpf: deprecate bpf_object__open_xattr() API

 Documentation/bpf/prog_lsm.rst                            | 2 +-
 tools/bpf/bpftool/Documentation/bpftool-gen.rst           | 2 +-
 tools/bpf/bpftool/iter.c                                  | 2 +-
 tools/build/feature/test-libbpf.c                         | 2 +-
 tools/lib/bpf/libbpf.c                                    | 2 +-
 tools/lib/bpf/libbpf.h                                    | 7 +++++--
 tools/perf/tests/llvm.c                                   | 2 +-
 tools/perf/util/bpf-loader.c                              | 7 +++++--
 tools/testing/selftests/bpf/prog_tests/btf.c              | 2 +-
 tools/testing/selftests/bpf/prog_tests/select_reuseport.c | 2 +-
 tools/testing/selftests/bpf/test_maps.c                   | 4 ++--
 tools/testing/selftests/bpf/test_sockmap.c                | 2 +-
 12 files changed, 21 insertions(+), 15 deletions(-)

--
2.30.2

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

* [PATCH bpf-next 1/3] libbpf: deprecate bpf_object__open() API
  2021-12-30 20:40 [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API Christy Lee
@ 2021-12-30 20:40 ` Christy Lee
  2021-12-30 20:40 ` [PATCH bpf-next 2/3] libbpf: deprecate bpf_object__open_buffer() API Christy Lee
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Christy Lee @ 2021-12-30 20:40 UTC (permalink / raw)
  To: andrii, acme; +Cc: christyc.y.lee, bpf, kernel-team, ast, Christy Lee

Deprecate bpf_object__open() in favor of bpf_object__open_file().

Signed-off-by: Christy Lee <christylee@fb.com>
---
 Documentation/bpf/prog_lsm.rst                            | 2 +-
 tools/bpf/bpftool/Documentation/bpftool-gen.rst           | 2 +-
 tools/bpf/bpftool/iter.c                                  | 2 +-
 tools/build/feature/test-libbpf.c                         | 2 +-
 tools/lib/bpf/libbpf.h                                    | 5 +++--
 tools/perf/util/bpf-loader.c                              | 2 +-
 tools/testing/selftests/bpf/prog_tests/btf.c              | 2 +-
 tools/testing/selftests/bpf/prog_tests/select_reuseport.c | 2 +-
 tools/testing/selftests/bpf/test_maps.c                   | 4 ++--
 tools/testing/selftests/bpf/test_sockmap.c                | 2 +-
 10 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/Documentation/bpf/prog_lsm.rst b/Documentation/bpf/prog_lsm.rst
index 0dc3fb0d9544..9217f5373951 100644
--- a/Documentation/bpf/prog_lsm.rst
+++ b/Documentation/bpf/prog_lsm.rst
@@ -102,7 +102,7 @@ eBPF programs can be loaded with the :manpage:`bpf(2)` syscall's
 
 	struct bpf_object *obj;
 
-	obj = bpf_object__open("./my_prog.o");
+	obj = bpf_object__open_file("./my_prog.o", NULL);
 	bpf_object__load(obj);
 
 This can be simplified by using a skeleton header generated by ``bpftool``:
diff --git a/tools/bpf/bpftool/Documentation/bpftool-gen.rst b/tools/bpf/bpftool/Documentation/bpftool-gen.rst
index bc276388f432..036c6ec0cc48 100644
--- a/tools/bpf/bpftool/Documentation/bpftool-gen.rst
+++ b/tools/bpf/bpftool/Documentation/bpftool-gen.rst
@@ -46,7 +46,7 @@ DESCRIPTION
 		  individually compiled files that are then linked into
 		  a single resulting BPF object file, which can be used to
 		  generated BPF skeleton (with **gen skeleton** command) or
-		  passed directly into **libbpf** (using **bpf_object__open()**
+		  passed directly into **libbpf** (using **bpf_object__open_file()**
 		  family of APIs).
 
 	**bpftool gen skeleton** *FILE*
diff --git a/tools/bpf/bpftool/iter.c b/tools/bpf/bpftool/iter.c
index f88fdc820d23..94a0ac1e176c 100644
--- a/tools/bpf/bpftool/iter.c
+++ b/tools/bpf/bpftool/iter.c
@@ -45,7 +45,7 @@ static int do_pin(int argc, char **argv)
 		}
 	}
 
-	obj = bpf_object__open(objfile);
+	obj = bpf_object__open_file(objfile, NULL);
 	err = libbpf_get_error(obj);
 	if (err) {
 		p_err("can't open objfile %s", objfile);
diff --git a/tools/build/feature/test-libbpf.c b/tools/build/feature/test-libbpf.c
index a508756cf4cc..113d5be747f1 100644
--- a/tools/build/feature/test-libbpf.c
+++ b/tools/build/feature/test-libbpf.c
@@ -3,5 +3,5 @@
 
 int main(void)
 {
-	return bpf_object__open("test") ? 0 : -1;
+	return bpf_object__open_file("test", NULL) ? 0 : -1;
 }
diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
index 85dfef88b3d2..2c8767706f8e 100644
--- a/tools/lib/bpf/libbpf.h
+++ b/tools/lib/bpf/libbpf.h
@@ -150,6 +150,7 @@ struct bpf_object_open_opts {
 };
 #define bpf_object_open_opts__last_field kernel_log_level
 
+LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__open_file() instead")
 LIBBPF_API struct bpf_object *bpf_object__open(const char *path);
 
 /**
@@ -807,10 +808,10 @@ struct bpf_prog_load_attr {
 	int prog_flags;
 };
 
-LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__open() and bpf_object__load() instead")
+LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__open_file() and bpf_object__load() instead")
 LIBBPF_API int bpf_prog_load_xattr(const struct bpf_prog_load_attr *attr,
 				   struct bpf_object **pobj, int *prog_fd);
-LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_object__open() and bpf_object__load() instead")
+LIBBPF_DEPRECATED_SINCE(0, 7, "use bpf_object__open_file() and bpf_object__load() instead")
 LIBBPF_API int bpf_prog_load_deprecated(const char *file, enum bpf_prog_type type,
 					struct bpf_object **pobj, int *prog_fd);
 
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 528aeb0ab79d..75694703d638 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -101,7 +101,7 @@ struct bpf_object *bpf__prepare_load(const char *filename, bool source)
 
 		free(obj_buf);
 	} else
-		obj = bpf_object__open(filename);
+		obj = bpf_object__open_file(filename, NULL);
 
 	if (IS_ERR_OR_NULL(obj)) {
 		pr_debug("bpf: failed to load %s\n", filename);
diff --git a/tools/testing/selftests/bpf/prog_tests/btf.c b/tools/testing/selftests/bpf/prog_tests/btf.c
index 8ba53acf9eb4..4bcc441fea21 100644
--- a/tools/testing/selftests/bpf/prog_tests/btf.c
+++ b/tools/testing/selftests/bpf/prog_tests/btf.c
@@ -4560,7 +4560,7 @@ static void do_test_file(unsigned int test_num)
 	has_btf_ext = btf_ext != NULL;
 	btf_ext__free(btf_ext);
 
-	obj = bpf_object__open(test->file);
+	obj = bpf_object__open_file(test->file, NULL);
 	err = libbpf_get_error(obj);
 	if (CHECK(err, "obj: %d", err))
 		return;
diff --git a/tools/testing/selftests/bpf/prog_tests/select_reuseport.c b/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
index 1cbd8cd64044..83472eda46b5 100644
--- a/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
+++ b/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
@@ -91,7 +91,7 @@ static int prepare_bpf_obj(void)
 	struct bpf_map *map;
 	int err;
 
-	obj = bpf_object__open("test_select_reuseport_kern.o");
+	obj = bpf_object__open_file("test_select_reuseport_kern.o", NULL);
 	err = libbpf_get_error(obj);
 	RET_ERR(err, "open test_select_reuseport_kern.o",
 		"obj:%p PTR_ERR(obj):%d\n", obj, err);
diff --git a/tools/testing/selftests/bpf/test_maps.c b/tools/testing/selftests/bpf/test_maps.c
index 50f7e74ca0b9..241b14f25ef5 100644
--- a/tools/testing/selftests/bpf/test_maps.c
+++ b/tools/testing/selftests/bpf/test_maps.c
@@ -1156,7 +1156,7 @@ static void test_map_in_map(void)
 	__u32 id = 0;
 	libbpf_print_fn_t old_print_fn;
 
-	obj = bpf_object__open(MAPINMAP_PROG);
+	obj = bpf_object__open_file(MAPINMAP_PROG, NULL);
 
 	fd = bpf_map_create(BPF_MAP_TYPE_HASH, NULL, sizeof(int), sizeof(int), 2, NULL);
 	if (fd < 0) {
@@ -1227,7 +1227,7 @@ static void test_map_in_map(void)
 	bpf_object__close(obj);
 
 	/* Test that failing bpf_object__create_map() destroys the inner map */
-	obj = bpf_object__open(MAPINMAP_INVALID_PROG);
+	obj = bpf_object__open_file(MAPINMAP_INVALID_PROG, NULL);
 	err = libbpf_get_error(obj);
 	if (err) {
 		printf("Failed to load %s program: %d %d",
diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c
index 1ba7e7346afb..521b4e0c0852 100644
--- a/tools/testing/selftests/bpf/test_sockmap.c
+++ b/tools/testing/selftests/bpf/test_sockmap.c
@@ -1761,7 +1761,7 @@ static int populate_progs(char *bpf_file)
 	int i = 0;
 	long err;
 
-	obj = bpf_object__open(bpf_file);
+	obj = bpf_object__open_file(bpf_file, NULL);
 	err = libbpf_get_error(obj);
 	if (err) {
 		char err_buf[256];
-- 
2.30.2


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

* [PATCH bpf-next 2/3] libbpf: deprecate bpf_object__open_buffer() API
  2021-12-30 20:40 [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API Christy Lee
  2021-12-30 20:40 ` [PATCH bpf-next 1/3] libbpf: deprecate bpf_object__open() API Christy Lee
@ 2021-12-30 20:40 ` Christy Lee
  2021-12-30 20:40 ` [PATCH bpf-next 3/3] libbpf: deprecate bpf_object__open_xattr() API Christy Lee
  2022-01-06  0:03 ` [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API Andrii Nakryiko
  3 siblings, 0 replies; 6+ messages in thread
From: Christy Lee @ 2021-12-30 20:40 UTC (permalink / raw)
  To: andrii, acme; +Cc: christyc.y.lee, bpf, kernel-team, ast, Christy Lee

Deprecate bpf_object__open_buffer() API in favor of
bpf_object__open_mem() instead.

Signed-off-by: Christy Lee <christylee@fb.com>
---
 tools/lib/bpf/libbpf.h       | 1 +
 tools/perf/tests/llvm.c      | 2 +-
 tools/perf/util/bpf-loader.c | 5 ++++-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
index 2c8767706f8e..063639a109aa 100644
--- a/tools/lib/bpf/libbpf.h
+++ b/tools/lib/bpf/libbpf.h
@@ -181,6 +181,7 @@ bpf_object__open_mem(const void *obj_buf, size_t obj_buf_sz,
 		     const struct bpf_object_open_opts *opts);
 
 /* deprecated bpf_object__open variants */
+LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__open_mem() instead")
 LIBBPF_API struct bpf_object *
 bpf_object__open_buffer(const void *obj_buf, size_t obj_buf_sz,
 			const char *name);
diff --git a/tools/perf/tests/llvm.c b/tools/perf/tests/llvm.c
index 8ac0a3a457ef..0bc25a56cfef 100644
--- a/tools/perf/tests/llvm.c
+++ b/tools/perf/tests/llvm.c
@@ -13,7 +13,7 @@ static int test__bpf_parsing(void *obj_buf, size_t obj_buf_sz)
 {
 	struct bpf_object *obj;
 
-	obj = bpf_object__open_buffer(obj_buf, obj_buf_sz, NULL);
+	obj = bpf_object__open_mem(obj_buf, obj_buf_sz, NULL);
 	if (libbpf_get_error(obj))
 		return TEST_FAIL;
 	bpf_object__close(obj);
diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 75694703d638..48deb05a9726 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -72,6 +72,9 @@ bpf__prepare_load_buffer(void *obj_buf, size_t obj_buf_sz, const char *name)
 
 struct bpf_object *bpf__prepare_load(const char *filename, bool source)
 {
+	DECLARE_LIBBPF_OPTS(bpf_object_open_opts, opts,
+		.object_name = filename
+	);
 	struct bpf_object *obj;
 
 	if (!libbpf_initialized) {
@@ -94,7 +97,7 @@ struct bpf_object *bpf__prepare_load(const char *filename, bool source)
 				return ERR_PTR(-BPF_LOADER_ERRNO__COMPILE);
 		} else
 			pr_debug("bpf: successful builtin compilation\n");
-		obj = bpf_object__open_buffer(obj_buf, obj_buf_sz, filename);
+		obj = bpf_object__open_mem(obj_buf, obj_buf_sz, &opts);
 
 		if (!IS_ERR_OR_NULL(obj) && llvm_param.dump_obj)
 			llvm__dump_obj(filename, obj_buf, obj_buf_sz);
-- 
2.30.2


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

* [PATCH bpf-next 3/3] libbpf: deprecate bpf_object__open_xattr() API
  2021-12-30 20:40 [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API Christy Lee
  2021-12-30 20:40 ` [PATCH bpf-next 1/3] libbpf: deprecate bpf_object__open() API Christy Lee
  2021-12-30 20:40 ` [PATCH bpf-next 2/3] libbpf: deprecate bpf_object__open_buffer() API Christy Lee
@ 2021-12-30 20:40 ` Christy Lee
  2022-01-06  0:01   ` Andrii Nakryiko
  2022-01-06  0:03 ` [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API Andrii Nakryiko
  3 siblings, 1 reply; 6+ messages in thread
From: Christy Lee @ 2021-12-30 20:40 UTC (permalink / raw)
  To: andrii, acme; +Cc: christyc.y.lee, bpf, kernel-team, ast, Christy Lee

Deprecate bpf_object__open_xattr() in favor of
bpf_object__open_mem() instead.

Signed-off-by: Christy Lee <christylee@fb.com>
---
 tools/lib/bpf/libbpf.c | 2 +-
 tools/lib/bpf/libbpf.h | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 9cb99d1e2385..25b571a297f8 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -9443,7 +9443,7 @@ static int bpf_prog_load_xattr2(const struct bpf_prog_load_attr *attr,
 	open_attr.file = attr->file;
 	open_attr.prog_type = attr->prog_type;
 
-	obj = bpf_object__open_xattr(&open_attr);
+	obj = libbpf_ptr(__bpf_object__open_xattr(&open_attr, 0));
 	err = libbpf_get_error(obj);
 	if (err)
 		return libbpf_err(-ENOENT);
diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
index 063639a109aa..aa507a330b61 100644
--- a/tools/lib/bpf/libbpf.h
+++ b/tools/lib/bpf/libbpf.h
@@ -185,6 +185,7 @@ LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__open_mem() instead")
 LIBBPF_API struct bpf_object *
 bpf_object__open_buffer(const void *obj_buf, size_t obj_buf_sz,
 			const char *name);
+LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__open_mem() instead")
 LIBBPF_API struct bpf_object *
 bpf_object__open_xattr(struct bpf_object_open_attr *attr);
 
-- 
2.30.2


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

* Re: [PATCH bpf-next 3/3] libbpf: deprecate bpf_object__open_xattr() API
  2021-12-30 20:40 ` [PATCH bpf-next 3/3] libbpf: deprecate bpf_object__open_xattr() API Christy Lee
@ 2022-01-06  0:01   ` Andrii Nakryiko
  0 siblings, 0 replies; 6+ messages in thread
From: Andrii Nakryiko @ 2022-01-06  0:01 UTC (permalink / raw)
  To: Christy Lee
  Cc: Andrii Nakryiko, Arnaldo Carvalho de Melo, Christy Lee, bpf,
	Kernel Team, Alexei Starovoitov

On Thu, Dec 30, 2021 at 12:40 PM Christy Lee <christylee@fb.com> wrote:
>
> Deprecate bpf_object__open_xattr() in favor of
> bpf_object__open_mem() instead.
>
> Signed-off-by: Christy Lee <christylee@fb.com>
> ---
>  tools/lib/bpf/libbpf.c | 2 +-
>  tools/lib/bpf/libbpf.h | 1 +
>  2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
> index 9cb99d1e2385..25b571a297f8 100644
> --- a/tools/lib/bpf/libbpf.c
> +++ b/tools/lib/bpf/libbpf.c
> @@ -9443,7 +9443,7 @@ static int bpf_prog_load_xattr2(const struct bpf_prog_load_attr *attr,
>         open_attr.file = attr->file;
>         open_attr.prog_type = attr->prog_type;
>
> -       obj = bpf_object__open_xattr(&open_attr);
> +       obj = libbpf_ptr(__bpf_object__open_xattr(&open_attr, 0));

there is no need to use libbpf_ptr() here, it's used for proper
handling of error returning from public API functions. Here you don't
yet return an error (it will happen with libbpf_err() few lines
below).

>         err = libbpf_get_error(obj);
>         if (err)
>                 return libbpf_err(-ENOENT);
> diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h
> index 063639a109aa..aa507a330b61 100644
> --- a/tools/lib/bpf/libbpf.h
> +++ b/tools/lib/bpf/libbpf.h
> @@ -185,6 +185,7 @@ LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__open_mem() instead")
>  LIBBPF_API struct bpf_object *
>  bpf_object__open_buffer(const void *obj_buf, size_t obj_buf_sz,
>                         const char *name);
> +LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__open_mem() instead")
>  LIBBPF_API struct bpf_object *
>  bpf_object__open_xattr(struct bpf_object_open_attr *attr);
>
> --
> 2.30.2
>

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

* Re: [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API
  2021-12-30 20:40 [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API Christy Lee
                   ` (2 preceding siblings ...)
  2021-12-30 20:40 ` [PATCH bpf-next 3/3] libbpf: deprecate bpf_object__open_xattr() API Christy Lee
@ 2022-01-06  0:03 ` Andrii Nakryiko
  3 siblings, 0 replies; 6+ messages in thread
From: Andrii Nakryiko @ 2022-01-06  0:03 UTC (permalink / raw)
  To: Christy Lee
  Cc: Andrii Nakryiko, Arnaldo Carvalho de Melo, Christy Lee, bpf,
	Kernel Team, Alexei Starovoitov

On Thu, Dec 30, 2021 at 12:40 PM Christy Lee <christylee@fb.com> wrote:
>
> Deprecate bpf_object__open(), bpf_object__open_buffer(), and
> bpf_object__open_xattr() in favor of bpf_object__open_file() and
> bpf_object__open_mem().
>
> [0] Closes: https://github.com/libbpf/libbpf/issues/287
>

Looks good overall, see a nit about libbpf_ptr(). But please also
split out selftests, perf, bpftool changes into separate commits.
Thanks!

> Christy Lee (3):
>   libbpf: deprecate bpf_object__open() API
>   libbpf: deprecate bpf_object__open_buffer() API
>   libbpf: deprecate bpf_object__open_xattr() API
>
>  Documentation/bpf/prog_lsm.rst                            | 2 +-
>  tools/bpf/bpftool/Documentation/bpftool-gen.rst           | 2 +-
>  tools/bpf/bpftool/iter.c                                  | 2 +-
>  tools/build/feature/test-libbpf.c                         | 2 +-
>  tools/lib/bpf/libbpf.c                                    | 2 +-
>  tools/lib/bpf/libbpf.h                                    | 7 +++++--
>  tools/perf/tests/llvm.c                                   | 2 +-
>  tools/perf/util/bpf-loader.c                              | 7 +++++--
>  tools/testing/selftests/bpf/prog_tests/btf.c              | 2 +-
>  tools/testing/selftests/bpf/prog_tests/select_reuseport.c | 2 +-
>  tools/testing/selftests/bpf/test_maps.c                   | 4 ++--
>  tools/testing/selftests/bpf/test_sockmap.c                | 2 +-
>  12 files changed, 21 insertions(+), 15 deletions(-)
>
> --
> 2.30.2

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

end of thread, other threads:[~2022-01-06  0:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-30 20:40 [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API Christy Lee
2021-12-30 20:40 ` [PATCH bpf-next 1/3] libbpf: deprecate bpf_object__open() API Christy Lee
2021-12-30 20:40 ` [PATCH bpf-next 2/3] libbpf: deprecate bpf_object__open_buffer() API Christy Lee
2021-12-30 20:40 ` [PATCH bpf-next 3/3] libbpf: deprecate bpf_object__open_xattr() API Christy Lee
2022-01-06  0:01   ` Andrii Nakryiko
2022-01-06  0:03 ` [PATCH bpf-next 0/3] libbpf 1.0: deprecate non-OPTS variants of bpf_object__open API Andrii Nakryiko

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.