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 */
89

source code of linux/include/linux/signal_types.h