1/*
2 *  include/asm-s390/signal.h
3 *
4 *  S390 version
5 *
6 *  Derived from "include/asm-i386/signal.h"
7 */
8
9#ifndef _ASMS390_SIGNAL_H
10#define _ASMS390_SIGNAL_H
11
12#include <linux/types.h>
13
14/* Avoid too many header ordering problems.  */
15struct siginfo;
16
17#ifdef __KERNEL__
18/* Most things should be clean enough to redefine this at will, if care
19   is taken to make libc match.  */
20#include <asm/sigcontext.h>
21#define _NSIG           _SIGCONTEXT_NSIG
22#define _NSIG_BPW       _SIGCONTEXT_NSIG_BPW
23#define _NSIG_WORDS     _SIGCONTEXT_NSIG_WORDS
24
25typedef unsigned long old_sigset_t;             /* at least 32 bits */
26
27typedef struct {
28        unsigned long sig[_NSIG_WORDS];
29} sigset_t;
30
31#else
32/* Here we must cater to libcs that poke about in kernel headers.  */
33
34#define NSIG            32
35typedef unsigned long sigset_t;
36
37#endif /* __KERNEL__ */
38
39#define SIGHUP           1
40#define SIGINT           2
41#define SIGQUIT          3
42#define SIGILL           4
43#define SIGTRAP          5
44#define SIGABRT          6
45#define SIGIOT           6
46#define SIGBUS           7
47#define SIGFPE           8
48#define SIGKILL          9
49#define SIGUSR1         10
50#define SIGSEGV         11
51#define SIGUSR2         12
52#define SIGPIPE         13
53#define SIGALRM         14
54#define SIGTERM         15
55#define SIGSTKFLT       16
56#define SIGCHLD         17
57#define SIGCONT         18
58#define SIGSTOP         19
59#define SIGTSTP         20
60#define SIGTTIN         21
61#define SIGTTOU         22
62#define SIGURG          23
63#define SIGXCPU         24
64#define SIGXFSZ         25
65#define SIGVTALRM       26
66#define SIGPROF         27
67#define SIGWINCH        28
68#define SIGIO           29
69#define SIGPOLL         SIGIO
70/*
71#define SIGLOST         29
72*/
73#define SIGPWR          30
74#define SIGSYS		31
75#define SIGUNUSED       31
76
77/* These should not be considered constants from userland.  */
78#define SIGRTMIN        32
79#define SIGRTMAX        (_NSIG-1)
80
81/*
82 * SA_FLAGS values:
83 *
84 * SA_ONSTACK indicates that a registered stack_t will be used.
85 * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the
86 * SA_RESTART flag to get restarting signals (which were the default long ago)
87 * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
88 * SA_RESETHAND clears the handler when the signal is delivered.
89 * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
90 * SA_NODEFER prevents the current signal from being masked in the handler.
91 *
92 * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
93 * Unix names RESETHAND and NODEFER respectively.
94 */
95#define SA_NOCLDSTOP    0x00000001
96#define SA_NOCLDWAIT    0x00000002 /* not supported yet */
97#define SA_SIGINFO      0x00000004
98#define SA_ONSTACK      0x08000000
99#define SA_RESTART      0x10000000
100#define SA_NODEFER      0x40000000
101#define SA_RESETHAND    0x80000000
102
103#define SA_NOMASK       SA_NODEFER
104#define SA_ONESHOT      SA_RESETHAND
105#define SA_INTERRUPT    0x20000000 /* dummy -- ignored */
106
107#define SA_RESTORER     0x04000000
108
109/*
110 * sigaltstack controls
111 */
112#define SS_ONSTACK      1
113#define SS_DISABLE      2
114
115#define MINSIGSTKSZ     2048
116#define SIGSTKSZ        8192
117
118#ifdef __KERNEL__
119
120/*
121 * These values of sa_flags are used only by the kernel as part of the
122 * irq handling routines.
123 *
124 * SA_INTERRUPT is also used by the irq handling routines.
125 * SA_SHIRQ is for shared interrupt support on PCI and EISA.
126 */
127#define SA_PROBE                SA_ONESHOT
128#define SA_SAMPLE_RANDOM        SA_RESTART
129#define SA_SHIRQ                0x04000000
130#endif
131
132#define SIG_BLOCK          0    /* for blocking signals */
133#define SIG_UNBLOCK        1    /* for unblocking signals */
134#define SIG_SETMASK        2    /* for setting the signal mask */
135
136/* Type of a signal handler.  */
137typedef void (*__sighandler_t)(int);
138
139#define SIG_DFL ((__sighandler_t)0)     /* default signal handling */
140#define SIG_IGN ((__sighandler_t)1)     /* ignore signal */
141#define SIG_ERR ((__sighandler_t)-1)    /* error return from signal */
142
143#ifdef __KERNEL__
144struct old_sigaction {
145        __sighandler_t sa_handler;
146        old_sigset_t sa_mask;
147        unsigned long sa_flags;
148        void (*sa_restorer)(void);
149};
150
151struct sigaction {
152        __sighandler_t sa_handler;
153        unsigned long sa_flags;
154        void (*sa_restorer)(void);
155        sigset_t sa_mask;               /* mask last for extensibility */
156};
157
158struct k_sigaction {
159        struct sigaction sa;
160};
161#else
162/* Here we must cater to libcs that poke about in kernel headers.  */
163
164struct sigaction {
165        union {
166          __sighandler_t _sa_handler;
167          void (*_sa_sigaction)(int, struct siginfo *, void *);
168        } _u;
169        unsigned long sa_flags;
170        void (*sa_restorer)(void);
171	sigset_t sa_mask;
172};
173
174#define sa_handler      _u._sa_handler
175#define sa_sigaction    _u._sa_sigaction
176
177#endif /* __KERNEL__ */
178
179typedef struct sigaltstack {
180        void *ss_sp;
181        int ss_flags;
182        size_t ss_size;
183} stack_t;
184
185
186#endif
187