signal_types.h (1725B)
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 12typedef struct kernel_siginfo { 13 __SIGINFO; 14} kernel_siginfo_t; 15 16struct ucounts; 17 18/* 19 * Real Time signals may be queued. 20 */ 21 22struct 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 32struct sigpending { 33 struct list_head list; 34 sigset_t signal; 35}; 36 37struct 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 51struct 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 59struct 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 67struct 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 */