Re: [PATCH 6/7] selftests: only compile userfaultfd for x86 and powperpc

From: Michael Ellerman
Date: Sun Aug 30 2015 - 23:26:26 EST


On Fri, 2015-08-14 at 21:43 +0800, Bamvor Jian Zhang wrote:
> Signed-off-by: Bamvor Jian Zhang <bamvor.zhangjian@xxxxxxxxxx>
> ---
> tools/testing/selftests/vm/Makefile | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/tools/testing/selftests/vm/Makefile b/tools/testing/selftests/vm/Makefile
> index bb888c6..4dd6e4f 100644
> --- a/tools/testing/selftests/vm/Makefile
> +++ b/tools/testing/selftests/vm/Makefile
> @@ -1,5 +1,15 @@
> # Makefile for vm selftests
>
> +uname_M := $(shell uname -m 2>/dev/null || echo not)
> +ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/ -e s/ppc.*/powerpc/)
> +
> +ifeq ($(ARCH),powerpc)
> +support_userfaultfd = yes
> +endif
> +ifeq ($(ARCH),x86)
> +support_userfaultfd = yes
> +endif
> +
> CFLAGS = -Wall
> BINARIES = compaction_test
> BINARIES += hugepage-mmap
> @@ -9,7 +19,9 @@ BINARIES += mlock2-tests
> BINARIES += on-fault-limit
> BINARIES += thuge-gen
> BINARIES += transhuge-stress
> +ifdef support_userfaultfd
> BINARIES += userfaultfd
> +endif
>
> all: $(BINARIES)
> %: %.c


This is nasty. It means when userfaultfd gets implemented for other arches
someone has to remember to update the logic here, which they won't.

Instead the C program should just do nothing when __NR_userfaultfd is not defined, eg:

#ifdef __NR_userfaultfd

int main(int argc, char **argv)
{
...
}

#else

int main(void)
{
printf("skip: Skipping userfaultfd test\n");
return 0;
}
#endif


This way when the syscall is implemented for other arches the test will just
start working.

cheers


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/