1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2e6d930b4SIngo Molnar #ifndef _LINUX_SIGNAL_TYPES_H 3e6d930b4SIngo Molnar #define _LINUX_SIGNAL_TYPES_H 4e6d930b4SIngo Molnar 576960dbfSIngo Molnar /* 676960dbfSIngo Molnar * Basic signal handling related data type definitions: 776960dbfSIngo Molnar */ 876960dbfSIngo Molnar 9e6d930b4SIngo Molnar #include <linux/list.h> 10e6d930b4SIngo Molnar #include <uapi/linux/signal.h> 11e6d930b4SIngo Molnar 12ae7795bcSEric W. Biederman typedef struct kernel_siginfo { 13ae7795bcSEric W. Biederman __SIGINFO; 14ae7795bcSEric W. Biederman } kernel_siginfo_t; 15ae7795bcSEric W. Biederman 16d6469690SAlexey Gladkov struct ucounts; 17d6469690SAlexey Gladkov 1876960dbfSIngo Molnar /* 1976960dbfSIngo Molnar * Real Time signals may be queued. 2076960dbfSIngo Molnar */ 2176960dbfSIngo Molnar 2276960dbfSIngo Molnar struct sigqueue { 2376960dbfSIngo Molnar struct list_head list; 2476960dbfSIngo Molnar int flags; 25ae7795bcSEric W. Biederman kernel_siginfo_t info; 26d6469690SAlexey Gladkov struct ucounts *ucounts; 2776960dbfSIngo Molnar }; 2876960dbfSIngo Molnar 2976960dbfSIngo Molnar /* flags values. */ 3076960dbfSIngo Molnar #define SIGQUEUE_PREALLOC 1 3176960dbfSIngo Molnar 3276960dbfSIngo Molnar struct sigpending { 3376960dbfSIngo Molnar struct list_head list; 3476960dbfSIngo Molnar sigset_t signal; 3576960dbfSIngo Molnar }; 3676960dbfSIngo Molnar 3776960dbfSIngo Molnar struct sigaction { 3876960dbfSIngo Molnar #ifndef __ARCH_HAS_IRIX_SIGACTION 3976960dbfSIngo Molnar __sighandler_t sa_handler; 4076960dbfSIngo Molnar unsigned long sa_flags; 4176960dbfSIngo Molnar #else 4276960dbfSIngo Molnar unsigned int sa_flags; 4376960dbfSIngo Molnar __sighandler_t sa_handler; 4476960dbfSIngo Molnar #endif 4576960dbfSIngo Molnar #ifdef __ARCH_HAS_SA_RESTORER 4676960dbfSIngo Molnar __sigrestore_t sa_restorer; 4776960dbfSIngo Molnar #endif 4876960dbfSIngo Molnar sigset_t sa_mask; /* mask last for extensibility */ 4976960dbfSIngo Molnar }; 5076960dbfSIngo Molnar 5176960dbfSIngo Molnar struct k_sigaction { 5276960dbfSIngo Molnar struct sigaction sa; 5376960dbfSIngo Molnar #ifdef __ARCH_HAS_KA_RESTORER 5476960dbfSIngo Molnar __sigrestore_t ka_restorer; 5576960dbfSIngo Molnar #endif 5676960dbfSIngo Molnar }; 5776960dbfSIngo Molnar 5876960dbfSIngo Molnar #ifdef CONFIG_OLD_SIGACTION 5976960dbfSIngo Molnar struct old_sigaction { 6076960dbfSIngo Molnar __sighandler_t sa_handler; 6176960dbfSIngo Molnar old_sigset_t sa_mask; 6276960dbfSIngo Molnar unsigned long sa_flags; 6376960dbfSIngo Molnar __sigrestore_t sa_restorer; 6476960dbfSIngo Molnar }; 6576960dbfSIngo Molnar #endif 6676960dbfSIngo Molnar 6776960dbfSIngo Molnar struct ksignal { 6876960dbfSIngo Molnar struct k_sigaction ka; 69ae7795bcSEric W. Biederman kernel_siginfo_t info; 7076960dbfSIngo Molnar int sig; 7176960dbfSIngo Molnar }; 7276960dbfSIngo Molnar 73*82d43437SEric W. Biederman /* Used to kill the race between sigaction and forced signals */ 74*82d43437SEric W. Biederman #define SA_IMMUTABLE 0x00800000 75*82d43437SEric W. Biederman 7623acdc76SPeter Collingbourne #ifndef __ARCH_UAPI_SA_FLAGS 7723acdc76SPeter Collingbourne #ifdef SA_RESTORER 7823acdc76SPeter Collingbourne #define __ARCH_UAPI_SA_FLAGS SA_RESTORER 7923acdc76SPeter Collingbourne #else 8023acdc76SPeter Collingbourne #define __ARCH_UAPI_SA_FLAGS 0 8123acdc76SPeter Collingbourne #endif 8223acdc76SPeter Collingbourne #endif 8323acdc76SPeter Collingbourne 8423acdc76SPeter Collingbourne #define UAPI_SA_FLAGS \ 8523acdc76SPeter Collingbourne (SA_NOCLDSTOP | SA_NOCLDWAIT | SA_SIGINFO | SA_ONSTACK | SA_RESTART | \ 866ac05e83SPeter Collingbourne SA_NODEFER | SA_RESETHAND | SA_EXPOSE_TAGBITS | __ARCH_UAPI_SA_FLAGS) 8723acdc76SPeter Collingbourne 88e6d930b4SIngo Molnar #endif /* _LINUX_SIGNAL_TYPES_H */ 89