Message ID | 20210714141532.28526-3-quentin@isovalent.com |
---|---|
State | New |
Headers | show |
Series | libbpf: rename btf__get_from_id() and btf__load() APIs, support split BTF | expand |
On Wed, Jul 14, 2021 at 7:15 AM Quentin Monnet <quentin@isovalent.com> wrote: > > Rename function btf__get_from_id() as btf__load_from_kernel_by_id() to > better indicate what the function does. > > The other tools calling the deprecated btf__get_from_id() function will > be updated in a future commit. > > References: > > - https://github.com/libbpf/libbpf/issues/278 > - https://github.com/libbpf/libbpf/wiki/Libbpf:-the-road-to-v1.0#btfh-apis > > Signed-off-by: Quentin Monnet <quentin@isovalent.com> > --- > tools/lib/bpf/btf.c | 4 +++- > tools/lib/bpf/btf.h | 1 + > tools/lib/bpf/libbpf.c | 2 +- > tools/lib/bpf/libbpf.map | 1 + > 4 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c > index 7e0de560490e..05b63b63083a 100644 > --- a/tools/lib/bpf/btf.c > +++ b/tools/lib/bpf/btf.c > @@ -1383,7 +1383,7 @@ struct btf *btf_get_from_fd(int btf_fd, struct btf *base_btf) > return btf; > } > > -int btf__get_from_id(__u32 id, struct btf **btf) > +int btf__load_from_kernel_by_id(__u32 id, struct btf **btf) we can't change existing btf__get_from_id(), but for the new btf__load_from_kernel_by_id() let's keep them in line with other BTF "constructor" APIs (btf__new and btf__parse) and return resulting struct btf, instead of passing it in output argument. With the new libbpf error reporting strategy (NULL on error + errno for those who care about specific error code), it has a better usability and will just be more consistent. > { > struct btf *res; > int err, btf_fd;
diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c index 7e0de560490e..05b63b63083a 100644 --- a/tools/lib/bpf/btf.c +++ b/tools/lib/bpf/btf.c @@ -1383,7 +1383,7 @@ struct btf *btf_get_from_fd(int btf_fd, struct btf *base_btf) return btf; } -int btf__get_from_id(__u32 id, struct btf **btf) +int btf__load_from_kernel_by_id(__u32 id, struct btf **btf) { struct btf *res; int err, btf_fd; @@ -1404,6 +1404,8 @@ int btf__get_from_id(__u32 id, struct btf **btf) *btf = res; return 0; } +int btf__get_from_id(__u32, struct btf **) + __attribute__((alias("btf__load_from_kernel_by_id"))); int btf__get_map_kv_tids(const struct btf *btf, const char *map_name, __u32 expected_key_size, __u32 expected_value_size, diff --git a/tools/lib/bpf/btf.h b/tools/lib/bpf/btf.h index b36f1b2805dc..0bd9d3952d19 100644 --- a/tools/lib/bpf/btf.h +++ b/tools/lib/bpf/btf.h @@ -68,6 +68,7 @@ LIBBPF_API const void *btf__get_raw_data(const struct btf *btf, __u32 *size); LIBBPF_API const char *btf__name_by_offset(const struct btf *btf, __u32 offset); LIBBPF_API const char *btf__str_by_offset(const struct btf *btf, __u32 offset); LIBBPF_API int btf__get_from_id(__u32 id, struct btf **btf); +LIBBPF_API int btf__load_from_kernel_by_id(__u32 id, struct btf **btf); LIBBPF_API int btf__get_map_kv_tids(const struct btf *btf, const char *map_name, __u32 expected_key_size, __u32 expected_value_size, diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index d8b7c7750402..e54fa1e57d48 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -9571,7 +9571,7 @@ static int libbpf_find_prog_btf_id(const char *name, __u32 attach_prog_fd) pr_warn("The target program doesn't have BTF\n"); goto out; } - if (btf__get_from_id(info->btf_id, &btf)) { + if (btf__load_from_kernel_by_id(info->btf_id, &btf)) { pr_warn("Failed to get BTF of the program\n"); goto out; } diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map index d42f20b0e9e4..a687cc63cd80 100644 --- a/tools/lib/bpf/libbpf.map +++ b/tools/lib/bpf/libbpf.map @@ -378,5 +378,6 @@ LIBBPF_0.5.0 { LIBBPF_0.6.0 { global: + btf__load_from_kernel_by_id; btf__load_into_kernel; } LIBBPF_0.5.0;
Rename function btf__get_from_id() as btf__load_from_kernel_by_id() to better indicate what the function does. The other tools calling the deprecated btf__get_from_id() function will be updated in a future commit. References: - https://github.com/libbpf/libbpf/issues/278 - https://github.com/libbpf/libbpf/wiki/Libbpf:-the-road-to-v1.0#btfh-apis Signed-off-by: Quentin Monnet <quentin@isovalent.com> --- tools/lib/bpf/btf.c | 4 +++- tools/lib/bpf/btf.h | 1 + tools/lib/bpf/libbpf.c | 2 +- tools/lib/bpf/libbpf.map | 1 + 4 files changed, 6 insertions(+), 2 deletions(-)