[PATCH 2/3] selftests/powerpc: Add test for forking inside transaction
Michael Neuling
michael.neuling at au.ibm.com
Wed Dec 2 16:27:55 AEDT 2015
On Tue, 2015-12-01 at 16:08 +1100, Rashmica Gupta wrote:
> This test does a fork syscall inside a transaction. Basic sniff test
> to see
> if we can enter the kernel during a transaction.
Can you add this description to the top of the test case as well?
Mikey
>
> Signed-off-by: Rashmica Gupta <rashmicy at gmail.com>
> ---
> tools/testing/selftests/powerpc/tm/.gitignore | 1 +
> tools/testing/selftests/powerpc/tm/Makefile | 2 +-
> tools/testing/selftests/powerpc/tm/tm-fork.c | 41
> +++++++++++++++++++++++++++
> 3 files changed, 43 insertions(+), 1 deletion(-)
> create mode 100644 tools/testing/selftests/powerpc/tm/tm-fork.c
>
> diff --git a/tools/testing/selftests/powerpc/tm/.gitignore
> b/tools/testing/selftests/powerpc/tm/.gitignore
> index e6668217ccd0..d0c7c97e9b13 100644
> --- a/tools/testing/selftests/powerpc/tm/.gitignore
> +++ b/tools/testing/selftests/powerpc/tm/.gitignore
> @@ -2,3 +2,4 @@ tm-resched-dscr
> tm-syscall
> tm-signal-msr-resv
> tm-signal-stack
> +tm-fork
> diff --git a/tools/testing/selftests/powerpc/tm/Makefile
> b/tools/testing/selftests/powerpc/tm/Makefile
> index 578572a3700a..f7d4727662aa 100644
> --- a/tools/testing/selftests/powerpc/tm/Makefile
> +++ b/tools/testing/selftests/powerpc/tm/Makefile
> @@ -1,4 +1,4 @@
> -TEST_PROGS := tm-resched-dscr tm-syscall tm-signal-msr-resv tm
> -signal-stack
> +TEST_PROGS := tm-resched-dscr tm-syscall tm-signal-msr-resv tm
> -signal-stack tm-fork
>
> all: $(TEST_PROGS)
>
> diff --git a/tools/testing/selftests/powerpc/tm/tm-fork.c
> b/tools/testing/selftests/powerpc/tm/tm-fork.c
> new file mode 100644
> index 000000000000..f571a48a59a0
> --- /dev/null
> +++ b/tools/testing/selftests/powerpc/tm/tm-fork.c
> @@ -0,0 +1,41 @@
> +/*
> + * Copyright 2015, Michael Neuling, IBM Corp.
> + * Licensed under GPLv2.
> + *
> + * Edited: Rashmica Gupta, Nov 2015
> + *
> + * Fork inside a transaction
> + */
> +
> +#include <errno.h>
> +#include <inttypes.h>
> +#include <pthread.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <unistd.h>
> +
> +#include "utils.h"
> +#include "tm.h"
> +
> +int test_fork(void)
> +{
> + SKIP_IF(!have_htm());
> +
> + asm __volatile__(
> + "tbegin.;"
> + "blt 1f; "
> + "li 0, 2;" /* fork syscall */
> + "sc ;"
> + "tend.;"
> + "1: ;"
> + : : : "memory", "r0");
> + /* If we reach here, we've passed. Otherwise we've probably
> crashed
> + * the kernel */
> +
> + return 0;
> +}
> +
> +int main(int argc, char *argv[])
> +{
> + return test_harness(test_fork, "tm_fork");
> +}
More information about the Linuxppc-dev
mailing list