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