xref: /linux-6.15/include/linux/signal_types.h (revision bb7e5ce7)
1 #ifndef _LINUX_SIGNAL_TYPES_H
2 #define _LINUX_SIGNAL_TYPES_H
3 
4 /*
5  * Basic signal handling related data type definitions:
6  */
7 
8 #include <linux/list.h>
9 #include <uapi/linux/signal.h>
10 
11 /*
12  * Real Time signals may be queued.
13  */
14 
15 struct sigqueue {
16 	struct list_head list;
17 	int flags;
18 	siginfo_t info;
19 	struct user_struct *user;
20 };
21 
22 /* flags values. */
23 #define SIGQUEUE_PREALLOC	1
24 
25 struct sigpending {
26 	struct list_head list;
27 	sigset_t signal;
28 };
29 
30 struct sigaction {
31 #ifndef __ARCH_HAS_IRIX_SIGACTION
32 	__sighandler_t	sa_handler;
33 	unsigned long	sa_flags;
34 #else
35 	unsigned int	sa_flags;
36 	__sighandler_t	sa_handler;
37 #endif
38 #ifdef __ARCH_HAS_SA_RESTORER
39 	__sigrestore_t sa_restorer;
40 #endif
41 	sigset_t	sa_mask;	/* mask last for extensibility */
42 };
43 
44 struct k_sigaction {
45 	struct sigaction sa;
46 #ifdef __ARCH_HAS_KA_RESTORER
47 	__sigrestore_t ka_restorer;
48 #endif
49 };
50 
51 #ifdef CONFIG_OLD_SIGACTION
52 struct old_sigaction {
53 	__sighandler_t sa_handler;
54 	old_sigset_t sa_mask;
55 	unsigned long sa_flags;
56 	__sigrestore_t sa_restorer;
57 };
58 #endif
59 
60 struct ksignal {
61 	struct k_sigaction ka;
62 	siginfo_t info;
63 	int sig;
64 };
65 
66 #endif /* _LINUX_SIGNAL_TYPES_H */
67