Re: [PATCHv3 bpf-next 20/26] selftests/bpf: Add uprobe_multi test program

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 30, 2023 at 1:37 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote:
>
> Adding uprobe_multi test program that defines 50k uprobe_multi_func_*
> functions and will serve as attach point for uprobe_multi bench test
> in following patch.
>
> Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
> ---
>  tools/testing/selftests/bpf/Makefile       |  5 ++
>  tools/testing/selftests/bpf/uprobe_multi.c | 53 ++++++++++++++++++++++
>  2 files changed, 58 insertions(+)
>  create mode 100644 tools/testing/selftests/bpf/uprobe_multi.c
>
> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
> index ad6b585e0d7c..acf7c9a29082 100644
> --- a/tools/testing/selftests/bpf/Makefile
> +++ b/tools/testing/selftests/bpf/Makefile
> @@ -567,6 +567,7 @@ TRUNNER_EXTRA_FILES := $(OUTPUT)/urandom_read $(OUTPUT)/bpf_testmod.ko      \
>                        $(OUTPUT)/liburandom_read.so                     \
>                        $(OUTPUT)/xdp_synproxy                           \
>                        $(OUTPUT)/sign-file                              \
> +                      $(OUTPUT)/uprobe_multi                           \

would adding all this to urandom_read be too bad in terms of size and
performance? I'm just not sure we won't yet more custom binaries and
rules in Makefile

>                        ima_setup.sh                                     \
>                        verify_sig_setup.sh                              \
>                        $(wildcard progs/btf_dump_test_case_*.c)         \
> @@ -670,6 +671,10 @@ $(OUTPUT)/veristat: $(OUTPUT)/veristat.o
>         $(call msg,BINARY,,$@)
>         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(filter %.a %.o,$^) $(LDLIBS) -o $@
>
> +$(OUTPUT)/uprobe_multi: uprobe_multi.c
> +       $(call msg,BINARY,,$@)
> +       $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
> +
>  EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(SCRATCH_DIR) $(HOST_SCRATCH_DIR) \
>         prog_tests/tests.h map_tests/tests.h verifier/tests.h           \
>         feature bpftool                                                 \
> diff --git a/tools/testing/selftests/bpf/uprobe_multi.c b/tools/testing/selftests/bpf/uprobe_multi.c
> new file mode 100644
> index 000000000000..115a7f6cebfa
> --- /dev/null
> +++ b/tools/testing/selftests/bpf/uprobe_multi.c
> @@ -0,0 +1,53 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +#include <stdio.h>
> +
> +#define __PASTE(a, b) a##b
> +#define PASTE(a, b) __PASTE(a, b)
> +
> +#define NAME(name, idx) PASTE(name, idx)
> +
> +#define DEF(name, idx)  int NAME(name, idx)(void) { return 0; }
> +#define CALL(name, idx) NAME(name, idx)();
> +
> +#define F(body, name, idx) body(name, idx)
> +
> +#define F10(body, name, idx) \
> +       F(body, PASTE(name, idx), 0) F(body, PASTE(name, idx), 1) F(body, PASTE(name, idx), 2) \
> +       F(body, PASTE(name, idx), 3) F(body, PASTE(name, idx), 4) F(body, PASTE(name, idx), 5) \
> +       F(body, PASTE(name, idx), 6) F(body, PASTE(name, idx), 7) F(body, PASTE(name, idx), 8) \
> +       F(body, PASTE(name, idx), 9)
> +
> +#define F100(body, name, idx) \
> +       F10(body, PASTE(name, idx), 0) F10(body, PASTE(name, idx), 1) F10(body, PASTE(name, idx), 2) \
> +       F10(body, PASTE(name, idx), 3) F10(body, PASTE(name, idx), 4) F10(body, PASTE(name, idx), 5) \
> +       F10(body, PASTE(name, idx), 6) F10(body, PASTE(name, idx), 7) F10(body, PASTE(name, idx), 8) \
> +       F10(body, PASTE(name, idx), 9)
> +
> +#define F1000(body, name, idx) \
> +       F100(body, PASTE(name, idx), 0) F100(body, PASTE(name, idx), 1) F100(body, PASTE(name, idx), 2) \
> +       F100(body, PASTE(name, idx), 3) F100(body, PASTE(name, idx), 4) F100(body, PASTE(name, idx), 5) \
> +       F100(body, PASTE(name, idx), 6) F100(body, PASTE(name, idx), 7) F100(body, PASTE(name, idx), 8) \
> +       F100(body, PASTE(name, idx), 9)
> +
> +#define F10000(body, name, idx) \
> +       F1000(body, PASTE(name, idx), 0) F1000(body, PASTE(name, idx), 1) F1000(body, PASTE(name, idx), 2) \
> +       F1000(body, PASTE(name, idx), 3) F1000(body, PASTE(name, idx), 4) F1000(body, PASTE(name, idx), 5) \
> +       F1000(body, PASTE(name, idx), 6) F1000(body, PASTE(name, idx), 7) F1000(body, PASTE(name, idx), 8) \
> +       F1000(body, PASTE(name, idx), 9)
> +
> +F10000(DEF, uprobe_multi_func_, 0)
> +F10000(DEF, uprobe_multi_func_, 1)
> +F10000(DEF, uprobe_multi_func_, 2)
> +F10000(DEF, uprobe_multi_func_, 3)
> +F10000(DEF, uprobe_multi_func_, 4)
> +
> +int main(void)
> +{
> +       F10000(CALL, uprobe_multi_func_, 0)
> +       F10000(CALL, uprobe_multi_func_, 1)
> +       F10000(CALL, uprobe_multi_func_, 2)
> +       F10000(CALL, uprobe_multi_func_, 3)
> +       F10000(CALL, uprobe_multi_func_, 4)
> +       return 0;
> +}
> --
> 2.41.0
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux