On Fri, Mar 04, 2022 at 03:11:23PM -0800, Andrii Nakryiko wrote: > On Tue, Feb 22, 2022 at 9:08 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > > > Adding kprobe_multi attach test that uses new fprobe interface to > > attach kprobe program to multiple functions. > > > > The test is attaching programs to bpf_fentry_test* functions and > > uses single trampoline program bpf_prog_test_run to trigger > > bpf_fentry_test* functions. > > > > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > > --- > > subj typo: selftest -> selftests ok > > > .../bpf/prog_tests/kprobe_multi_test.c | 115 ++++++++++++++++++ > > .../selftests/bpf/progs/kprobe_multi.c | 58 +++++++++ > > 2 files changed, 173 insertions(+) > > create mode 100644 tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c > > create mode 100644 tools/testing/selftests/bpf/progs/kprobe_multi.c > > > > [...] > > > + > > +static void test_link_api_addrs(void) > > +{ > > + DECLARE_LIBBPF_OPTS(bpf_link_create_opts, opts); > > + __u64 addrs[8]; > > + > > + kallsyms_find("bpf_fentry_test1", &addrs[0]); > > + kallsyms_find("bpf_fentry_test2", &addrs[1]); > > + kallsyms_find("bpf_fentry_test3", &addrs[2]); > > + kallsyms_find("bpf_fentry_test4", &addrs[3]); > > + kallsyms_find("bpf_fentry_test5", &addrs[4]); > > + kallsyms_find("bpf_fentry_test6", &addrs[5]); > > + kallsyms_find("bpf_fentry_test7", &addrs[6]); > > + kallsyms_find("bpf_fentry_test8", &addrs[7]); > > ASSERT_OK() that symbols are found? It also sucks that we re-parse > kallsyms so much... ok > > maybe use load_kallsyms() to pre-cache? We should also teach > load_kallsyms() to not reload kallsyms more than once true, it saved many cycles in bpftrace ;-) will check > > > + > > + opts.kprobe_multi.addrs = (__u64) addrs; > > + opts.kprobe_multi.cnt = 8; > > ARRAY_SIZE()? ok > > > + test_link_api(&opts); > > +} > > + > > +static void test_link_api_syms(void) > > +{ > > + DECLARE_LIBBPF_OPTS(bpf_link_create_opts, opts); > > nit: just LIBBPF_OPTS ok > > > + const char *syms[8] = { > > + "bpf_fentry_test1", > > + "bpf_fentry_test2", > > + "bpf_fentry_test3", > > + "bpf_fentry_test4", > > + "bpf_fentry_test5", > > + "bpf_fentry_test6", > > + "bpf_fentry_test7", > > + "bpf_fentry_test8", > > + }; > > + > > + opts.kprobe_multi.syms = (__u64) syms; > > + opts.kprobe_multi.cnt = 8; > > ARRAY_SIZE() ? ok > > > + test_link_api(&opts); > > +} > > + > > +void test_kprobe_multi_test(void) > > +{ > > + test_skel_api(); > > + test_link_api_syms(); > > + test_link_api_addrs(); > > model as subtests? ok thanks, jirka