bpf.vger.kernel.org archive mirror
 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 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).