aboutsummaryrefslogtreecommitdiffstats
path: root/tools/lib/bpf/libbpf.h
diff options
context:
space:
mode:
authorMartin KaFai Lau <kafai@fb.com>2018-04-18 18:56:05 -0400
committerDaniel Borkmann <daniel@iogearbox.net>2018-04-19 15:46:25 -0400
commit8a138aed4a807ceb143882fb23a423d524dcdb35 (patch)
tree27dcccc69aefb72be5e5bb615847173c0eb290d7 /tools/lib/bpf/libbpf.h
parent3bd86a8409fc5a87ea415087b0c30ab42818e7c8 (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.h3
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);
78int bpf_object__unload(struct bpf_object *obj); 78int bpf_object__unload(struct bpf_object *obj);
79const char *bpf_object__name(struct bpf_object *obj); 79const char *bpf_object__name(struct bpf_object *obj);
80unsigned int bpf_object__kversion(struct bpf_object *obj); 80unsigned int bpf_object__kversion(struct bpf_object *obj);
81int bpf_object__btf_fd(const struct bpf_object *obj);
81 82
82struct bpf_object *bpf_object__next(struct bpf_object *prev); 83struct 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);
241int bpf_map__fd(struct bpf_map *map); 242int bpf_map__fd(struct bpf_map *map);
242const struct bpf_map_def *bpf_map__def(struct bpf_map *map); 243const struct bpf_map_def *bpf_map__def(struct bpf_map *map);
243const char *bpf_map__name(struct bpf_map *map); 244const char *bpf_map__name(struct bpf_map *map);
245uint32_t bpf_map__btf_key_id(const struct bpf_map *map);
246uint32_t bpf_map__btf_value_id(const struct bpf_map *map);
244 247
245typedef void (*bpf_map_clear_priv_t)(struct bpf_map *, void *); 248typedef void (*bpf_map_clear_priv_t)(struct bpf_map *, void *);
246int bpf_map__set_priv(struct bpf_map *map, void *priv, 249int bpf_map__set_priv(struct bpf_map *map, void *priv,