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
12/*
13 * Real Time signals may be queued.
14 */
15
16struct sigqueue {
17 struct list_head list;
18 int flags;
19 siginfo_t info;
20 struct user_struct *user;
21};
22
23/* flags values. */
24#define SIGQUEUE_PREALLOC 1
25
26struct sigpending {
27 struct list_head list;
28 sigset_t signal;
29};
30
31struct sigaction {
32#ifndef __ARCH_HAS_IRIX_SIGACTION
33 __sighandler_t sa_handler;
34 unsigned long sa_flags;
35#else
36 unsigned int sa_flags;
37 __sighandler_t sa_handler;
38#endif
39#ifdef __ARCH_HAS_SA_RESTORER
40 __sigrestore_t sa_restorer;
41#endif
42 sigset_t sa_mask; /* mask last for extensibility */
43};
44
45struct k_sigaction {
46 struct sigaction sa;
47#ifdef __ARCH_HAS_KA_RESTORER
48 __sigrestore_t ka_restorer;
49#endif
50};
51
52#ifdef CONFIG_OLD_SIGACTION
53struct old_sigaction {
54 __sighandler_t sa_handler;
55 old_sigset_t sa_mask;
56 unsigned long sa_flags;
57 __sigrestore_t sa_restorer;
58};
59#endif
60
61struct ksignal {
62 struct k_sigaction ka;
63 siginfo_t info;
64 int sig;
65};
66
67#endif /* _LINUX_SIGNAL_TYPES_H */
68