OSDN Git Service

libbpf: Introduce bpf_object__btf
authorAndrey Ignatov <rdna@fb.com>
Thu, 14 Feb 2019 23:01:43 +0000 (15:01 -0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 15 Feb 2019 14:20:54 +0000 (15:20 +0100)
Add new accessor for bpf_object to get opaque struct btf * from it.

struct btf * is needed for all operations with BTF and it's present in
bpf_object. The only thing missing is a way to get it.

Example use-case is to get BTF key_type_id and value_type_id for a map in
bpf_object. It can be done with btf__get_map_kv_tids() but that function
requires struct btf *.

Similar API can be added for struct btf_ext but no use-case for it yet.

Signed-off-by: Andrey Ignatov <rdna@fb.com>
Acked-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h
tools/lib/bpf/libbpf.map

index 9597d4d..b38dcbe 100644 (file)
@@ -2331,6 +2331,11 @@ unsigned int bpf_object__kversion(struct bpf_object *obj)
        return obj ? obj->kern_version : 0;
 }
 
+struct btf *bpf_object__btf(struct bpf_object *obj)
+{
+       return obj ? obj->btf : NULL;
+}
+
 int bpf_object__btf_fd(const struct bpf_object *obj)
 {
        return obj->btf ? btf__fd(obj->btf) : -1;
index 987fd92..6c0168f 100644 (file)
@@ -89,6 +89,9 @@ LIBBPF_API int bpf_object__load(struct bpf_object *obj);
 LIBBPF_API int bpf_object__unload(struct bpf_object *obj);
 LIBBPF_API const char *bpf_object__name(struct bpf_object *obj);
 LIBBPF_API unsigned int bpf_object__kversion(struct bpf_object *obj);
+
+struct btf;
+LIBBPF_API struct btf *bpf_object__btf(struct bpf_object *obj);
 LIBBPF_API int bpf_object__btf_fd(const struct bpf_object *obj);
 
 LIBBPF_API struct bpf_program *
index 16f342c..99dfa71 100644 (file)
@@ -132,6 +132,7 @@ LIBBPF_0.0.2 {
                bpf_probe_prog_type;
                bpf_map__resize;
                bpf_map_lookup_elem_flags;
+               bpf_object__btf;
                bpf_object__find_map_fd_by_name;
                bpf_get_link_xdp_id;
                btf__dedup;