libbpf: Add bpf_object__unpin()
authorDaniel Xu <dxu@dxuuu.xyz>
Wed, 23 Aug 2023 23:15:02 +0000 (17:15 -0600)
committerAndrii Nakryiko <andrii@kernel.org>
Thu, 24 Aug 2023 00:10:09 +0000 (17:10 -0700)
For bpf_object__pin_programs() there is bpf_object__unpin_programs().
Likewise bpf_object__unpin_maps() for bpf_object__pin_maps().

But no bpf_object__unpin() for bpf_object__pin(). Adding the former adds
symmetry to the API.

It's also convenient for cleanup in application code. It's an API I
would've used if it was available for a repro I was writing earlier.

Signed-off-by: Daniel Xu <dxu@dxuuu.xyz>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Reviewed-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/bpf/b2f9d41da4a350281a0b53a804d11b68327e14e5.1692832478.git.dxu@dxuuu.xyz
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h
tools/lib/bpf/libbpf.map

index 4c3967d94b6d3ff9b19778f98e925db60086e3d6..96ff1aa4bf6a0ebb49abf2d4f886c66f0d522da3 100644 (file)
@@ -8376,6 +8376,21 @@ int bpf_object__pin(struct bpf_object *obj, const char *path)
        return 0;
 }
 
+int bpf_object__unpin(struct bpf_object *obj, const char *path)
+{
+       int err;
+
+       err = bpf_object__unpin_programs(obj, path);
+       if (err)
+               return libbpf_err(err);
+
+       err = bpf_object__unpin_maps(obj, path);
+       if (err)
+               return libbpf_err(err);
+
+       return 0;
+}
+
 static void bpf_map__destroy(struct bpf_map *map)
 {
        if (map->inner_map) {
index 2e3eb3614c40b83de4ea4eaf278b66e524ca1a0b..0e52621cba435ae31feaa500300eb77a74e08f2a 100644 (file)
@@ -266,6 +266,7 @@ LIBBPF_API int bpf_object__pin_programs(struct bpf_object *obj,
 LIBBPF_API int bpf_object__unpin_programs(struct bpf_object *obj,
                                          const char *path);
 LIBBPF_API int bpf_object__pin(struct bpf_object *object, const char *path);
+LIBBPF_API int bpf_object__unpin(struct bpf_object *object, const char *path);
 
 LIBBPF_API const char *bpf_object__name(const struct bpf_object *obj);
 LIBBPF_API unsigned int bpf_object__kversion(const struct bpf_object *obj);
index 841a2f9c6fef443c9597b8df3cc6e7749eee2c5c..57712321490f8e0d7569b0733d987b678827c6da 100644 (file)
@@ -395,6 +395,7 @@ LIBBPF_1.2.0 {
 LIBBPF_1.3.0 {
        global:
                bpf_obj_pin_opts;
+               bpf_object__unpin;
                bpf_prog_detach_opts;
                bpf_program__attach_netfilter;
                bpf_program__attach_tcx;