On Fri, Jun 26, 2020 at 1:18 AM Daniel T. Lee <danieltimlee@xxxxxxxxx> 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 <danieltimlee@xxxxxxxxx> > --- 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; > + } > + [...]