xref: /openbmc/linux/include/linux/signal_types.h (revision 82d43437)
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