1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _LINUX_SIGNAL_TYPES_H |
3 | #define _LINUX_SIGNAL_TYPES_H |
4 | |
5 | /* |
6 | * Basic signal handling related data type definitions: |
7 | */ |
8 | |
9 | #include <linux/list.h> |
10 | #include <uapi/linux/signal.h> |
11 | |
12 | typedef struct kernel_siginfo { |
13 | __SIGINFO; |
14 | } kernel_siginfo_t; |
15 | |
16 | struct ucounts; |
17 | |
18 | /* |
19 | * Real Time signals may be queued. |
20 | */ |
21 | |
22 | struct sigqueue { |
23 | struct list_head list; |
24 | int flags; |
25 | kernel_siginfo_t info; |
26 | struct ucounts *ucounts; |
27 | }; |
28 | |
29 | /* flags values. */ |
30 | #define SIGQUEUE_PREALLOC 1 |
31 | |
32 | struct sigpending { |
33 | struct list_head list; |
34 | sigset_t signal; |
35 | }; |
36 | |
37 | struct sigaction { |
38 | #ifndef __ARCH_HAS_IRIX_SIGACTION |
39 | __sighandler_t sa_handler; |
40 | unsigned long sa_flags; |
41 | #else |
42 | unsigned int sa_flags; |
43 | __sighandler_t sa_handler; |
44 | #endif |
45 | #ifdef __ARCH_HAS_SA_RESTORER |
46 | __sigrestore_t sa_restorer; |
47 | #endif |
48 | sigset_t sa_mask; /* mask last for extensibility */ |
49 | }; |
50 | |
51 | struct k_sigaction { |
52 | struct sigaction sa; |
53 | #ifdef __ARCH_HAS_KA_RESTORER |
54 | __sigrestore_t ka_restorer; |
55 | #endif |
56 | }; |
57 | |
58 | #ifdef CONFIG_OLD_SIGACTION |
59 | struct old_sigaction { |
60 | __sighandler_t sa_handler; |
61 | old_sigset_t sa_mask; |
62 | unsigned long sa_flags; |
63 | __sigrestore_t sa_restorer; |
64 | }; |
65 | #endif |
66 | |
67 | struct ksignal { |
68 | struct k_sigaction ka; |
69 | kernel_siginfo_t info; |
70 | int sig; |
71 | }; |
72 | |
73 | /* Used to kill the race between sigaction and forced signals */ |
74 | #define SA_IMMUTABLE 0x00800000 |
75 | |
76 | #ifndef __ARCH_UAPI_SA_FLAGS |
77 | #ifdef SA_RESTORER |
78 | #define __ARCH_UAPI_SA_FLAGS SA_RESTORER |
79 | #else |
80 | #define __ARCH_UAPI_SA_FLAGS 0 |
81 | #endif |
82 | #endif |
83 | |
84 | #define UAPI_SA_FLAGS \ |
85 | (SA_NOCLDSTOP | SA_NOCLDWAIT | SA_SIGINFO | SA_ONSTACK | SA_RESTART | \ |
86 | SA_NODEFER | SA_RESETHAND | SA_EXPOSE_TAGBITS | __ARCH_UAPI_SA_FLAGS) |
87 | |
88 | #endif /* _LINUX_SIGNAL_TYPES_H */ |
89 | |