Re: [PATCH bpf-next v5] selftests/bpf: trace_helpers.c: optimize kallsyms cache

From: Yonghong Song
Date: Fri Aug 18 2023 - 13:51:44 EST




On 8/18/23 8:36 AM, Rong Tao wrote:
Hi, jirka

Sadly, we can't include libbpf_internal.h in trace_helpers.{h,c}.
we only have the following headers when compile samples/bpf/:

tree of samples/bpf/libbpf/
+-- bpf_helper_defs.h
+-- include
|   '-- bpf
|   +-- bpf_core_read.h
|   +-- bpf_endian.h
|   +-- bpf.h
|   +-- bpf_helper_defs.h
|   +-- bpf_helpers.h
|   +-- bpf_tracing.h
|   +-- btf.h
|   +-- libbpf_common.h
|   +-- libbpf.h
|   +-- libbpf_legacy.h
|   +-- libbpf_version.h
|   +-- skel_internal.h
|   '-- usdt.bpf.h
+-- libbpf.a

No libbpf_internal.h here.

What if we add a declaration to libbpf_ensure_mem() in trace_helpers.c?

[~/work/bpf-next/tools/testing/selftests/bpf/prog_tests (master)]$ grep libbpf_internal.h *
cpu_mask.c:#include "bpf/libbpf_internal.h"
kprobe_multi_test.c:#include "bpf/libbpf_internal.h"
kprobe_multi_testmod_test.c:#include "bpf/libbpf_internal.h"
module_fentry_shadow.c:#include "bpf/libbpf_internal.h"
perf_branches.c:#include "bpf/libbpf_internal.h"
perf_buffer.c:#include "bpf/libbpf_internal.h"
raw_tp_test_run.c:#include "bpf/libbpf_internal.h"
[~/work/bpf-next/tools/testing/selftests/bpf/prog_tests (master)]$ grep libbpf_ensure_mem *.c
kprobe_multi_test.c: err = libbpf_ensure_mem((void **) &syms, &cap,
[~/work/bpf-next/tools/testing/selftests/bpf/prog_tests (master)]$

Looks like it is already used for selftets.

The libbpf_internal.h exists in the following directory when you build
the selftest.

[~/work/bpf-next/tools/testing/selftests/bpf/tools/include/bpf (master)]$ ls
bpf_core_read.h bpf.h bpf_helpers.h btf.h libbpf_common.h libbpf_internal.h libbpf_version.h relo_core.h usdt.bpf.h
bpf_endian.h bpf_helper_defs.h bpf_tracing.h hashmap.h libbpf.h libbpf_legacy.h nlattr.h skel_internal.h



Good Day,
Rong Tao