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