diff options
author | Martin KaFai Lau <kafai@fb.com> | 2018-04-18 18:56:05 -0400 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2018-04-19 15:46:25 -0400 |
commit | 8a138aed4a807ceb143882fb23a423d524dcdb35 (patch) | |
tree | 27dcccc69aefb72be5e5bb615847173c0eb290d7 /tools/lib/bpf/libbpf.h | |
parent | 3bd86a8409fc5a87ea415087b0c30ab42818e7c8 (diff) |
bpf: btf: Add BTF support to libbpf
If the ".BTF" elf section exists, libbpf will try to create
a btf_fd (through BPF_BTF_LOAD). If that fails, it will still
continue loading the bpf prog/map without the BTF.
If the bpf_object has a BTF loaded, it will create a map with the btf_fd.
libbpf will try to figure out the btf_key_id and btf_value_id of a map by
finding the BTF type with name "<map_name>_key" and "<map_name>_value".
If they cannot be found, it will continue without using the BTF.
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Alexei Starovoitov <ast@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools/lib/bpf/libbpf.h')
-rw-r--r-- | tools/lib/bpf/libbpf.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 8b242486b464..d6ac4fa6f472 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h | |||
@@ -78,6 +78,7 @@ int bpf_object__load(struct bpf_object *obj); | |||
78 | int bpf_object__unload(struct bpf_object *obj); | 78 | int bpf_object__unload(struct bpf_object *obj); |
79 | const char *bpf_object__name(struct bpf_object *obj); | 79 | const char *bpf_object__name(struct bpf_object *obj); |
80 | unsigned int bpf_object__kversion(struct bpf_object *obj); | 80 | unsigned int bpf_object__kversion(struct bpf_object *obj); |
81 | int bpf_object__btf_fd(const struct bpf_object *obj); | ||
81 | 82 | ||
82 | struct bpf_object *bpf_object__next(struct bpf_object *prev); | 83 | struct bpf_object *bpf_object__next(struct bpf_object *prev); |
83 | #define bpf_object__for_each_safe(pos, tmp) \ | 84 | #define bpf_object__for_each_safe(pos, tmp) \ |
@@ -241,6 +242,8 @@ bpf_map__next(struct bpf_map *map, struct bpf_object *obj); | |||
241 | int bpf_map__fd(struct bpf_map *map); | 242 | int bpf_map__fd(struct bpf_map *map); |
242 | const struct bpf_map_def *bpf_map__def(struct bpf_map *map); | 243 | const struct bpf_map_def *bpf_map__def(struct bpf_map *map); |
243 | const char *bpf_map__name(struct bpf_map *map); | 244 | const char *bpf_map__name(struct bpf_map *map); |
245 | uint32_t bpf_map__btf_key_id(const struct bpf_map *map); | ||
246 | uint32_t bpf_map__btf_value_id(const struct bpf_map *map); | ||
244 | 247 | ||
245 | typedef void (*bpf_map_clear_priv_t)(struct bpf_map *, void *); | 248 | typedef void (*bpf_map_clear_priv_t)(struct bpf_map *, void *); |
246 | int bpf_map__set_priv(struct bpf_map *map, void *priv, | 249 | int bpf_map__set_priv(struct bpf_map *map, void *priv, |