treewide: remove redundant IS_ERR() before error code check
[linux/fpc-iii.git] / tools / testing / selftests / arm64 / signal / test_signals.h
blobf96baf1cef1a9554c6e4dd709b43852953bc98aa
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2019 ARM Limited */
4 #ifndef __TEST_SIGNALS_H__
5 #define __TEST_SIGNALS_H__
7 #include <signal.h>
8 #include <stdbool.h>
9 #include <ucontext.h>
12 * Using ARCH specific and sanitized Kernel headers installed by KSFT
13 * framework since we asked for it by setting flag KSFT_KHDR_INSTALL
14 * in our Makefile.
16 #include <asm/ptrace.h>
17 #include <asm/hwcap.h>
19 #define __stringify_1(x...) #x
20 #define __stringify(x...) __stringify_1(x)
22 #define get_regval(regname, out) \
23 { \
24 asm volatile("mrs %0, " __stringify(regname) \
25 : "=r" (out) \
26 : \
27 : "memory"); \
31 * Feature flags used in tdescr.feats_required to specify
32 * any feature by the test
34 enum {
35 FSSBS_BIT,
36 FMAX_END
39 #define FEAT_SSBS (1UL << FSSBS_BIT)
42 * A descriptor used to describe and configure a test case.
43 * Fields with a non-trivial meaning are described inline in the following.
45 struct tdescr {
46 /* KEEP THIS FIELD FIRST for easier lookup from assembly */
47 void *token;
48 /* when disabled token based sanity checking is skipped in handler */
49 bool sanity_disabled;
50 /* just a name for the test-case; manadatory field */
51 char *name;
52 char *descr;
53 unsigned long feats_required;
54 /* bitmask of effectively supported feats: populated at run-time */
55 unsigned long feats_supported;
56 bool initialized;
57 unsigned int minsigstksz;
58 /* signum used as a test trigger. Zero if no trigger-signal is used */
59 int sig_trig;
61 * signum considered as a successful test completion.
62 * Zero when no signal is expected on success
64 int sig_ok;
65 /* signum expected on unsupported CPU features. */
66 int sig_unsupp;
67 /* a timeout in second for test completion */
68 unsigned int timeout;
69 bool triggered;
70 bool pass;
71 unsigned int result;
72 /* optional sa_flags for the installed handler */
73 int sa_flags;
74 ucontext_t saved_uc;
75 /* used by get_current_ctx() */
76 size_t live_sz;
77 ucontext_t *live_uc;
78 volatile sig_atomic_t live_uc_valid;
79 /* optional test private data */
80 void *priv;
82 /* a custom setup: called alternatively to default_setup */
83 int (*setup)(struct tdescr *td);
84 /* a custom init: called by default test init after test_setup */
85 bool (*init)(struct tdescr *td);
86 /* a custom cleanup function called before test exits */
87 void (*cleanup)(struct tdescr *td);
88 /* an optional function to be used as a trigger for starting test */
89 int (*trigger)(struct tdescr *td);
91 * the actual test-core: invoked differently depending on the
92 * presence of the trigger function above; this is mandatory
94 int (*run)(struct tdescr *td, siginfo_t *si, ucontext_t *uc);
95 /* an optional function for custom results' processing */
96 void (*check_result)(struct tdescr *td);
99 extern struct tdescr tde;
100 #endif