blob: 6d4d9d1faee9e24eac40741b2f24c8c9f3a3c5ae [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Linus Torvalds1da177e2005-04-16 15:20:36 -07002 * S390 version
3 *
4 * Derived from "include/asm-i386/signal.h"
5 */
6
7#ifndef _ASMS390_SIGNAL_H
8#define _ASMS390_SIGNAL_H
9
10#include <linux/types.h>
11#include <linux/time.h>
12
13/* Avoid too many header ordering problems. */
14struct siginfo;
15struct pt_regs;
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
80
81/*
82 * SA_FLAGS values:
83 *
84 * SA_ONSTACK indicates that a registered stack_t will be used.
Linus Torvalds1da177e2005-04-16 15:20:36 -070085 * SA_RESTART flag to get restarting signals (which were the default long ago)
86 * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
87 * SA_RESETHAND clears the handler when the signal is delivered.
88 * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
89 * SA_NODEFER prevents the current signal from being masked in the handler.
90 *
91 * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
92 * Unix names RESETHAND and NODEFER respectively.
93 */
94#define SA_NOCLDSTOP 0x00000001
95#define SA_NOCLDWAIT 0x00000002
96#define SA_SIGINFO 0x00000004
97#define SA_ONSTACK 0x08000000
98#define SA_RESTART 0x10000000
99#define SA_NODEFER 0x40000000
100#define SA_RESETHAND 0x80000000
101
102#define SA_NOMASK SA_NODEFER
103#define SA_ONESHOT SA_RESETHAND
Linus Torvalds1da177e2005-04-16 15:20:36 -0700104
105#define SA_RESTORER 0x04000000
106
107/*
108 * sigaltstack controls
109 */
110#define SS_ONSTACK 1
111#define SS_DISABLE 2
112
113#define MINSIGSTKSZ 2048
114#define SIGSTKSZ 8192
115
Arnd Bergmann63b852a2009-05-13 22:56:24 +0000116#include <asm-generic/signal-defs.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -0700117
118#ifdef __KERNEL__
119struct old_sigaction {
120 __sighandler_t sa_handler;
121 old_sigset_t sa_mask;
122 unsigned long sa_flags;
123 void (*sa_restorer)(void);
124};
125
126struct sigaction {
127 __sighandler_t sa_handler;
128 unsigned long sa_flags;
129 void (*sa_restorer)(void);
130 sigset_t sa_mask; /* mask last for extensibility */
131};
132
133struct k_sigaction {
134 struct sigaction sa;
135};
136
137#define ptrace_signal_deliver(regs, cookie) do { } while (0)
138
139#else
140/* Here we must cater to libcs that poke about in kernel headers. */
141
142struct sigaction {
143 union {
144 __sighandler_t _sa_handler;
145 void (*_sa_sigaction)(int, struct siginfo *, void *);
146 } _u;
147#ifndef __s390x__ /* lovely */
148 sigset_t sa_mask;
149 unsigned long sa_flags;
150 void (*sa_restorer)(void);
151#else /* __s390x__ */
152 unsigned long sa_flags;
153 void (*sa_restorer)(void);
154 sigset_t sa_mask;
155#endif /* __s390x__ */
156};
157
158#define sa_handler _u._sa_handler
159#define sa_sigaction _u._sa_sigaction
160
161#endif /* __KERNEL__ */
162
163typedef struct sigaltstack {
Al Viroc2814472005-09-29 00:16:02 +0100164 void __user *ss_sp;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700165 int ss_flags;
166 size_t ss_size;
167} stack_t;
168
169
170#endif