libbpf: Deprecate bpf_object__load_xattr()
authorAndrii Nakryiko <andrii@kernel.org>
Thu, 9 Dec 2021 19:38:36 +0000 (11:38 -0800)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 10 Dec 2021 23:29:18 +0000 (15:29 -0800)
Deprecate non-extensible bpf_object__load_xattr() in v0.8 ([0]).

With log_level control through bpf_object_open_opts or
bpf_program__set_log_level(), we are finally at the point where
bpf_object__load_xattr() doesn't provide any functionality that can't be
accessed through other (better) ways. The other feature,
target_btf_path, is also controllable through bpf_object_open_opts.

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

Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20211209193840.1248570-9-andrii@kernel.org
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h

index e3e56be..18d95c6 100644 (file)
@@ -7462,14 +7462,10 @@ static int bpf_object__resolve_externs(struct bpf_object *obj,
        return 0;
 }
 
-int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
+static int bpf_object_load(struct bpf_object *obj, int extra_log_level, const char *target_btf_path)
 {
-       struct bpf_object *obj;
        int err, i;
 
-       if (!attr)
-               return libbpf_err(-EINVAL);
-       obj = attr->obj;
        if (!obj)
                return libbpf_err(-EINVAL);
 
@@ -7479,7 +7475,7 @@ int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
        }
 
        if (obj->gen_loader)
-               bpf_gen__init(obj->gen_loader, attr->log_level);
+               bpf_gen__init(obj->gen_loader, extra_log_level);
 
        err = bpf_object__probe_loading(obj);
        err = err ? : bpf_object__load_vmlinux_btf(obj, false);
@@ -7488,8 +7484,8 @@ int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
        err = err ? : bpf_object__sanitize_maps(obj);
        err = err ? : bpf_object__init_kern_struct_ops_maps(obj);
        err = err ? : bpf_object__create_maps(obj);
-       err = err ? : bpf_object__relocate(obj, obj->btf_custom_path ? : attr->target_btf_path);
-       err = err ? : bpf_object__load_progs(obj, attr->log_level);
+       err = err ? : bpf_object__relocate(obj, obj->btf_custom_path ? : target_btf_path);
+       err = err ? : bpf_object__load_progs(obj, extra_log_level);
        err = err ? : bpf_object_init_prog_arrays(obj);
 
        if (obj->gen_loader) {
@@ -7534,13 +7530,14 @@ out:
        return libbpf_err(err);
 }
 
-int bpf_object__load(struct bpf_object *obj)
+int bpf_object__load_xattr(struct bpf_object_load_attr *attr)
 {
-       struct bpf_object_load_attr attr = {
-               .obj = obj,
-       };
+       return bpf_object_load(attr->obj, attr->log_level, attr->target_btf_path);
+}
 
-       return bpf_object__load_xattr(&attr);
+int bpf_object__load(struct bpf_object *obj)
+{
+       return bpf_object_load(obj, 0, NULL);
 }
 
 static int make_parent_dir(const char *path)
index dacde55..a8b894d 100644 (file)
@@ -214,6 +214,7 @@ struct bpf_object_load_attr {
 
 /* Load/unload object into/from kernel */
 LIBBPF_API int bpf_object__load(struct bpf_object *obj);
+LIBBPF_DEPRECATED_SINCE(0, 8, "use bpf_object__load() instead")
 LIBBPF_API int bpf_object__load_xattr(struct bpf_object_load_attr *attr);
 LIBBPF_DEPRECATED_SINCE(0, 6, "bpf_object__unload() is deprecated, use bpf_object__close() instead")
 LIBBPF_API int bpf_object__unload(struct bpf_object *obj);