1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 *  S390 version
4 *
5 *  Derived from "include/asm-i386/signal.h"
6 */
7
8#ifndef _UAPI_ASMS390_SIGNAL_H
9#define _UAPI_ASMS390_SIGNAL_H
10
11#include <linux/types.h>
12#include <linux/time.h>
13
14/* Avoid too many header ordering problems.  */
15struct siginfo;
16struct pt_regs;
17
18#ifndef __KERNEL__
19/* Here we must cater to libcs that poke about in kernel headers.  */
20
21#define NSIG            32
22typedef unsigned long sigset_t;
23
24#endif /* __KERNEL__ */
25
26#define SIGHUP           1
27#define SIGINT           2
28#define SIGQUIT          3
29#define SIGILL           4
30#define SIGTRAP          5
31#define SIGABRT          6
32#define SIGIOT           6
33#define SIGBUS           7
34#define SIGFPE           8
35#define SIGKILL          9
36#define SIGUSR1         10
37#define SIGSEGV         11
38#define SIGUSR2         12
39#define SIGPIPE         13
40#define SIGALRM         14
41#define SIGTERM         15
42#define SIGSTKFLT       16
43#define SIGCHLD         17
44#define SIGCONT         18
45#define SIGSTOP         19
46#define SIGTSTP         20
47#define SIGTTIN         21
48#define SIGTTOU         22
49#define SIGURG          23
50#define SIGXCPU         24
51#define SIGXFSZ         25
52#define SIGVTALRM       26
53#define SIGPROF         27
54#define SIGWINCH        28
55#define SIGIO           29
56#define SIGPOLL         SIGIO
57/*
58#define SIGLOST         29
59*/
60#define SIGPWR          30
61#define SIGSYS		31
62#define SIGUNUSED       31
63
64/* These should not be considered constants from userland.  */
65#define SIGRTMIN        32
66#define SIGRTMAX        _NSIG
67
68#define SA_RESTORER     0x04000000
69
70#define MINSIGSTKSZ     2048
71#define SIGSTKSZ        8192
72
73#include <asm-generic/signal-defs.h>
74
75#ifndef __KERNEL__
76
77/*
78 * There are two system calls in regard to sigaction, sys_rt_sigaction
79 * and sys_sigaction. Internally the kernel uses the struct old_sigaction
80 * for the older sys_sigaction system call, and the kernel version of the
81 * struct sigaction for the newer sys_rt_sigaction.
82 *
83 * The uapi definition for struct sigaction has made a strange distinction
84 * between 31-bit and 64-bit in the past. For 64-bit the uapi structure
85 * looks like the kernel struct sigaction, but for 31-bit it used to
86 * look like the kernel struct old_sigaction. That practically made the
87 * structure unusable for either system call. To get around this problem
88 * the glibc always had its own definitions for the sigaction structures.
89 *
90 * The current struct sigaction uapi definition below is suitable for the
91 * sys_rt_sigaction system call only.
92 */
93struct sigaction {
94        union {
95          __sighandler_t _sa_handler;
96          void (*_sa_sigaction)(int, struct siginfo *, void *);
97        } _u;
98        unsigned long sa_flags;
99        void (*sa_restorer)(void);
100	sigset_t sa_mask;
101};
102
103#define sa_handler      _u._sa_handler
104#define sa_sigaction    _u._sa_sigaction
105
106#endif /* __KERNEL__ */
107
108typedef struct sigaltstack {
109        void __user *ss_sp;
110        int ss_flags;
111	__kernel_size_t ss_size;
112} stack_t;
113
114
115#endif /* _UAPI_ASMS390_SIGNAL_H */
116