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 16/* 17 * Real Time signals may be queued. 18 */ 19 20struct 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 30struct sigpending { 31 struct list_head list; 32 sigset_t signal; 33}; 34 35struct 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 49struct 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 57struct 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 65struct ksignal { 66 struct k_sigaction ka; 67 kernel_siginfo_t info; 68 int sig; 69}; 70 71#ifndef __ARCH_UAPI_SA_FLAGS 72#ifdef SA_RESTORER 73#define __ARCH_UAPI_SA_FLAGS SA_RESTORER 74#else 75#define __ARCH_UAPI_SA_FLAGS 0 76#endif 77#endif 78 79#define UAPI_SA_FLAGS \ 80 (SA_NOCLDSTOP | SA_NOCLDWAIT | SA_SIGINFO | SA_ONSTACK | SA_RESTART | \ 81 SA_NODEFER | SA_RESETHAND | SA_EXPOSE_TAGBITS | __ARCH_UAPI_SA_FLAGS) 82 83#endif /* _LINUX_SIGNAL_TYPES_H */ 84