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