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