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 /*
13  * Real Time signals may be queued.
14  */
15 
16 struct sigqueue {
17 	struct list_head list;
18 	int flags;
19 	siginfo_t info;
20 	struct user_struct *user;
21 };
22 
23 /* flags values. */
24 #define SIGQUEUE_PREALLOC	1
25 
26 struct sigpending {
27 	struct list_head list;
28 	sigset_t signal;
29 };
30 
31 struct sigaction {
32 #ifndef __ARCH_HAS_IRIX_SIGACTION
33 	__sighandler_t	sa_handler;
34 	unsigned long	sa_flags;
35 #else
36 	unsigned int	sa_flags;
37 	__sighandler_t	sa_handler;
38 #endif
39 #ifdef __ARCH_HAS_SA_RESTORER
40 	__sigrestore_t sa_restorer;
41 #endif
42 	sigset_t	sa_mask;	/* mask last for extensibility */
43 };
44 
45 struct k_sigaction {
46 	struct sigaction sa;
47 #ifdef __ARCH_HAS_KA_RESTORER
48 	__sigrestore_t ka_restorer;
49 #endif
50 };
51 
52 #ifdef CONFIG_OLD_SIGACTION
53 struct old_sigaction {
54 	__sighandler_t sa_handler;
55 	old_sigset_t sa_mask;
56 	unsigned long sa_flags;
57 	__sigrestore_t sa_restorer;
58 };
59 #endif
60 
61 struct ksignal {
62 	struct k_sigaction ka;
63 	siginfo_t info;
64 	int sig;
65 };
66 
67 #endif /* _LINUX_SIGNAL_TYPES_H */
68