On Fri, Jun 26, 2020 at 1:18 AM Daniel T. Lee <[email protected]> wrote:
>
> From commit 646f02ffdd49 ("libbpf: Add BTF-defined map-in-map
> support"), a way to define internal map in BTF-defined map has been
> added.
>
> Instead of using previous 'inner_map_idx' definition, the structure to
> be used for the inner map can be directly defined using array directive.
>
> __array(values, struct inner_map)
>
> This commit refactors map in map test program with libbpf by explicitly
> defining inner map with BTF-defined format.
>
> Signed-off-by: Daniel T. Lee <[email protected]>
> ---
Thanks for the clean up, looks good except that prog NULL check.
It also seems like this is the last use of bpf_map_def_legacy, do you
mind removing it as well?
> samples/bpf/Makefile | 2 +-
> samples/bpf/test_map_in_map_kern.c | 85 +++++++++++++++---------------
> samples/bpf/test_map_in_map_user.c | 53 +++++++++++++++++--
> 3 files changed, 91 insertions(+), 49 deletions(-)
>
[...]
>
> snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]);
> + obj = bpf_object__open_file(filename, NULL);
> + if (libbpf_get_error(obj)) {
this is right, but...
> + fprintf(stderr, "ERROR: opening BPF object file failed\n");
> + return 0;
> + }
>
> - if (load_bpf_file(filename)) {
> - printf("%s", bpf_log_buf);
> - return 1;
> + prog = bpf_object__find_program_by_name(obj, "trace_sys_connect");
> + if (libbpf_get_error(prog)) {
this is wrong. Just NULL check. libbpf APIs are not very consistent
with what they return, unfortunately.
> + printf("finding a prog in obj file failed\n");
> + goto cleanup;
> + }
> +
[...]