diff options
| author | Benjamin Gray <bgray@linux.ibm.com> | 2023-06-19 17:36:27 +1000 |
|---|---|---|
| committer | Michael Ellerman <mpe@ellerman.id.au> | 2023-06-19 17:36:28 +1000 |
| commit | bdb07f35a52f40c461c7da06ddcbaca1950fb9e0 (patch) | |
| tree | 2d3ef35d8ef3bede854c1a35e73ae2f9e03ae776 /tools/testing/selftests/powerpc/utils.c | |
| parent | b9125c9aa043a7556626e1aafb3190c61c1e2b2b (diff) | |
| download | linux-bdb07f35a52f40c461c7da06ddcbaca1950fb9e0.tar.gz linux-bdb07f35a52f40c461c7da06ddcbaca1950fb9e0.tar.bz2 linux-bdb07f35a52f40c461c7da06ddcbaca1950fb9e0.zip | |
selftests/powerpc/dexcr: Add hashst/hashchk test
Test the kernel DEXCR[NPHIE] interface and hashchk exception handling.
Introduces with it a DEXCR utils library for common DEXCR operations.
Volatile is used to prevent the compiler optimising away the signal
tests.
Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230616034846.311705-11-bgray@linux.ibm.com
Diffstat (limited to 'tools/testing/selftests/powerpc/utils.c')
| -rw-r--r-- | tools/testing/selftests/powerpc/utils.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/testing/selftests/powerpc/utils.c b/tools/testing/selftests/powerpc/utils.c index 252fb4a95e90..e5f2d8735c64 100644 --- a/tools/testing/selftests/powerpc/utils.c +++ b/tools/testing/selftests/powerpc/utils.c @@ -618,3 +618,27 @@ out: fclose(f); return rc; } + +struct sigaction push_signal_handler(int sig, void (*fn)(int, siginfo_t *, void *)) +{ + struct sigaction sa; + struct sigaction old_handler; + + sa.sa_sigaction = fn; + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_SIGINFO; + FAIL_IF_EXIT_MSG(sigaction(sig, &sa, &old_handler), + "failed to push signal handler"); + + return old_handler; +} + +struct sigaction pop_signal_handler(int sig, struct sigaction old_handler) +{ + struct sigaction popped; + + FAIL_IF_EXIT_MSG(sigaction(sig, &old_handler, &popped), + "failed to pop signal handler"); + + return popped; +} |
