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