diff options
author | Rashmica Gupta <rashmicy@gmail.com> | 2015-12-23 16:49:52 +1100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2016-05-11 21:54:13 +1000 |
commit | d95be4ca3e457044be55c8b1c1b5ac64f17d8a92 (patch) | |
tree | 5d82f93de878afcdf35dfff2f937edf2d3258d19 /tools/testing/selftests/powerpc/tm/tm-fork.c | |
parent | selftests/powerpc: Standardise TM calls (diff) | |
download | linux-dev-d95be4ca3e457044be55c8b1c1b5ac64f17d8a92.tar.xz linux-dev-d95be4ca3e457044be55c8b1c1b5ac64f17d8a92.zip |
selftests/powerpc: Add test for forking inside transaction
This test does a fork syscall inside a transaction. Basic sniff test to see
if we can enter the kernel during a transaction.
Signed-off-by: Rashmica Gupta <rashmicy@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to '')
-rw-r--r-- | tools/testing/selftests/powerpc/tm/tm-fork.c | 42 |
1 files changed, 42 insertions, 0 deletions
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..8d48579b7778 --- /dev/null +++ b/tools/testing/selftests/powerpc/tm/tm-fork.c @@ -0,0 +1,42 @@ +/* + * Copyright 2015, Michael Neuling, IBM Corp. + * Licensed under GPLv2. + * + * Edited: Rashmica Gupta, Nov 2015 + * + * This test does a fork syscall inside a transaction. Basic sniff test + * to see if we can enter the kernel during 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"); +} |