On Fri, Jan 13, 2023 at 02:43:47PM -0800, Andrii Nakryiko wrote: > On Fri, Jan 13, 2023 at 6:33 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > > > Add bench test for module portion of the symbols as well. > > > > # ./test_progs -v -t kprobe_multi_bench_attach_module > > bpf_testmod.ko is already unloaded. > > Loading bpf_testmod.ko... > > Successfully loaded bpf_testmod.ko. > > test_kprobe_multi_bench_attach:PASS:get_syms 0 nsec > > test_kprobe_multi_bench_attach:PASS:kprobe_multi_empty__open_and_load 0 nsec > > test_kprobe_multi_bench_attach:PASS:bpf_program__attach_kprobe_multi_opts 0 nsec > > test_kprobe_multi_bench_attach: found 26620 functions > > test_kprobe_multi_bench_attach: attached in 0.182s > > test_kprobe_multi_bench_attach: detached in 0.082s > > #96 kprobe_multi_bench_attach_module:OK > > Summary: 1/0 PASSED, 0 SKIPPED, 0 FAILED > > Successfully unloaded bpf_testmod.ko. > > > > It's useful for testing kprobe multi link modules resolving. > > > > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > > --- > > .../bpf/prog_tests/kprobe_multi_test.c | 21 ++++++++++++++----- > > 1 file changed, 16 insertions(+), 5 deletions(-) > > > > diff --git a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c > > index c6f37e825f11..017a6996f3fa 100644 > > --- a/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c > > +++ b/tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c > > @@ -322,7 +322,7 @@ static bool symbol_equal(long key1, long key2, void *ctx __maybe_unused) > > return strcmp((const char *) key1, (const char *) key2) == 0; > > } > > > > -static int get_syms(char ***symsp, size_t *cntp) > > +static int get_syms(char ***symsp, size_t *cntp, bool kernel) > > { > > size_t cap = 0, cnt = 0, i; > > char *name = NULL, **syms = NULL; > > @@ -349,8 +349,9 @@ static int get_syms(char ***symsp, size_t *cntp) > > } > > > > while (fgets(buf, sizeof(buf), f)) { > > - /* skip modules */ > > - if (strchr(buf, '[')) > > + if (kernel && strchr(buf, '[')) > > + continue; > > + if (!kernel && !strchr(buf, '[')) > > continue; > > > > free(name); > > @@ -404,7 +405,7 @@ static int get_syms(char ***symsp, size_t *cntp) > > return err; > > } > > > > -void serial_test_kprobe_multi_bench_attach(void) > > +static void test_kprobe_multi_bench_attach(bool kernel) > > { > > LIBBPF_OPTS(bpf_kprobe_multi_opts, opts); > > struct kprobe_multi_empty *skel = NULL; > > @@ -415,7 +416,7 @@ void serial_test_kprobe_multi_bench_attach(void) > > char **syms = NULL; > > size_t cnt = 0, i; > > > > - if (!ASSERT_OK(get_syms(&syms, &cnt), "get_syms")) > > + if (!ASSERT_OK(get_syms(&syms, &cnt, kernel), "get_syms")) > > return; > > > > skel = kprobe_multi_empty__open_and_load(); > > @@ -453,6 +454,16 @@ void serial_test_kprobe_multi_bench_attach(void) > > } > > } > > > > +void serial_test_kprobe_multi_bench_attach_kernel(void) > > +{ > > + test_kprobe_multi_bench_attach(true); > > +} > > + > > +void serial_test_kprobe_multi_bench_attach_module(void) > > +{ > > + test_kprobe_multi_bench_attach(false); > > +} > > + > > minor nit: probably would be better to make kernel and module variants > into subtests? ok, will change that thanks, jirka