1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * This file is subject to the terms and conditions of the GNU General Public 3*53ee8cc1Swenshuai.xi * License. See the file "COPYING" in the main directory of this archive 4*53ee8cc1Swenshuai.xi * for more details. 5*53ee8cc1Swenshuai.xi * 6*53ee8cc1Swenshuai.xi * Copyright (C) 1995, 96, 97, 98, 99, 2003 by Ralf Baechle 7*53ee8cc1Swenshuai.xi * Copyright (C) 1999 Silicon Graphics, Inc. 8*53ee8cc1Swenshuai.xi */ 9*53ee8cc1Swenshuai.xi #ifndef _ASM_SIGNAL_H 10*53ee8cc1Swenshuai.xi #define _ASM_SIGNAL_H 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi #include <linux/types.h> 13*53ee8cc1Swenshuai.xi 14*53ee8cc1Swenshuai.xi #define _NSIG 128 15*53ee8cc1Swenshuai.xi #define _NSIG_BPW (sizeof(unsigned long) * 8) 16*53ee8cc1Swenshuai.xi #define _NSIG_WORDS (_NSIG / _NSIG_BPW) 17*53ee8cc1Swenshuai.xi 18*53ee8cc1Swenshuai.xi typedef struct { 19*53ee8cc1Swenshuai.xi unsigned long sig[_NSIG_WORDS]; 20*53ee8cc1Swenshuai.xi } sigset_t; 21*53ee8cc1Swenshuai.xi 22*53ee8cc1Swenshuai.xi typedef unsigned long old_sigset_t; /* at least 32 bits */ 23*53ee8cc1Swenshuai.xi 24*53ee8cc1Swenshuai.xi #define SIGHUP 1 /* Hangup (POSIX). */ 25*53ee8cc1Swenshuai.xi #define SIGINT 2 /* Interrupt (ANSI). */ 26*53ee8cc1Swenshuai.xi #define SIGQUIT 3 /* Quit (POSIX). */ 27*53ee8cc1Swenshuai.xi #define SIGILL 4 /* Illegal instruction (ANSI). */ 28*53ee8cc1Swenshuai.xi #define SIGTRAP 5 /* Trace trap (POSIX). */ 29*53ee8cc1Swenshuai.xi #define SIGIOT 6 /* IOT trap (4.2 BSD). */ 30*53ee8cc1Swenshuai.xi #define SIGABRT SIGIOT /* Abort (ANSI). */ 31*53ee8cc1Swenshuai.xi #define SIGEMT 7 32*53ee8cc1Swenshuai.xi #define SIGFPE 8 /* Floating-point exception (ANSI). */ 33*53ee8cc1Swenshuai.xi #define SIGKILL 9 /* Kill, unblockable (POSIX). */ 34*53ee8cc1Swenshuai.xi #define SIGBUS 10 /* BUS error (4.2 BSD). */ 35*53ee8cc1Swenshuai.xi #define SIGSEGV 11 /* Segmentation violation (ANSI). */ 36*53ee8cc1Swenshuai.xi #define SIGSYS 12 37*53ee8cc1Swenshuai.xi #define SIGPIPE 13 /* Broken pipe (POSIX). */ 38*53ee8cc1Swenshuai.xi #define SIGALRM 14 /* Alarm clock (POSIX). */ 39*53ee8cc1Swenshuai.xi #define SIGTERM 15 /* Termination (ANSI). */ 40*53ee8cc1Swenshuai.xi #define SIGUSR1 16 /* User-defined signal 1 (POSIX). */ 41*53ee8cc1Swenshuai.xi #define SIGUSR2 17 /* User-defined signal 2 (POSIX). */ 42*53ee8cc1Swenshuai.xi #define SIGCHLD 18 /* Child status has changed (POSIX). */ 43*53ee8cc1Swenshuai.xi #define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */ 44*53ee8cc1Swenshuai.xi #define SIGPWR 19 /* Power failure restart (System V). */ 45*53ee8cc1Swenshuai.xi #define SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */ 46*53ee8cc1Swenshuai.xi #define SIGURG 21 /* Urgent condition on socket (4.2 BSD). */ 47*53ee8cc1Swenshuai.xi #define SIGIO 22 /* I/O now possible (4.2 BSD). */ 48*53ee8cc1Swenshuai.xi #define SIGPOLL SIGIO /* Pollable event occurred (System V). */ 49*53ee8cc1Swenshuai.xi #define SIGSTOP 23 /* Stop, unblockable (POSIX). */ 50*53ee8cc1Swenshuai.xi #define SIGTSTP 24 /* Keyboard stop (POSIX). */ 51*53ee8cc1Swenshuai.xi #define SIGCONT 25 /* Continue (POSIX). */ 52*53ee8cc1Swenshuai.xi #define SIGTTIN 26 /* Background read from tty (POSIX). */ 53*53ee8cc1Swenshuai.xi #define SIGTTOU 27 /* Background write to tty (POSIX). */ 54*53ee8cc1Swenshuai.xi #define SIGVTALRM 28 /* Virtual alarm clock (4.2 BSD). */ 55*53ee8cc1Swenshuai.xi #define SIGPROF 29 /* Profiling alarm clock (4.2 BSD). */ 56*53ee8cc1Swenshuai.xi #define SIGXCPU 30 /* CPU limit exceeded (4.2 BSD). */ 57*53ee8cc1Swenshuai.xi #define SIGXFSZ 31 /* File size limit exceeded (4.2 BSD). */ 58*53ee8cc1Swenshuai.xi 59*53ee8cc1Swenshuai.xi /* These should not be considered constants from userland. */ 60*53ee8cc1Swenshuai.xi #define SIGRTMIN 32 61*53ee8cc1Swenshuai.xi #define SIGRTMAX _NSIG 62*53ee8cc1Swenshuai.xi 63*53ee8cc1Swenshuai.xi /* 64*53ee8cc1Swenshuai.xi * SA_FLAGS values: 65*53ee8cc1Swenshuai.xi * 66*53ee8cc1Swenshuai.xi * SA_ONSTACK indicates that a registered stack_t will be used. 67*53ee8cc1Swenshuai.xi * SA_RESTART flag to get restarting signals (which were the default long ago) 68*53ee8cc1Swenshuai.xi * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. 69*53ee8cc1Swenshuai.xi * SA_RESETHAND clears the handler when the signal is delivered. 70*53ee8cc1Swenshuai.xi * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. 71*53ee8cc1Swenshuai.xi * SA_NODEFER prevents the current signal from being masked in the handler. 72*53ee8cc1Swenshuai.xi * 73*53ee8cc1Swenshuai.xi * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single 74*53ee8cc1Swenshuai.xi * Unix names RESETHAND and NODEFER respectively. 75*53ee8cc1Swenshuai.xi */ 76*53ee8cc1Swenshuai.xi #define SA_ONSTACK 0x08000000 77*53ee8cc1Swenshuai.xi #define SA_RESETHAND 0x80000000 78*53ee8cc1Swenshuai.xi #define SA_RESTART 0x10000000 79*53ee8cc1Swenshuai.xi #define SA_SIGINFO 0x00000008 80*53ee8cc1Swenshuai.xi #define SA_NODEFER 0x40000000 81*53ee8cc1Swenshuai.xi #define SA_NOCLDWAIT 0x00010000 82*53ee8cc1Swenshuai.xi #define SA_NOCLDSTOP 0x00000001 83*53ee8cc1Swenshuai.xi 84*53ee8cc1Swenshuai.xi #define SA_NOMASK SA_NODEFER 85*53ee8cc1Swenshuai.xi #define SA_ONESHOT SA_RESETHAND 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi #define SA_RESTORER 0x04000000 /* Only for o32 */ 88*53ee8cc1Swenshuai.xi 89*53ee8cc1Swenshuai.xi /* 90*53ee8cc1Swenshuai.xi * sigaltstack controls 91*53ee8cc1Swenshuai.xi */ 92*53ee8cc1Swenshuai.xi #define SS_ONSTACK 1 93*53ee8cc1Swenshuai.xi #define SS_DISABLE 2 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi #define MINSIGSTKSZ 2048 96*53ee8cc1Swenshuai.xi #define SIGSTKSZ 8192 97*53ee8cc1Swenshuai.xi 98*53ee8cc1Swenshuai.xi 99*53ee8cc1Swenshuai.xi #define SIG_BLOCK 1 /* for blocking signals */ 100*53ee8cc1Swenshuai.xi #define SIG_UNBLOCK 2 /* for unblocking signals */ 101*53ee8cc1Swenshuai.xi #define SIG_SETMASK 3 /* for setting the signal mask */ 102*53ee8cc1Swenshuai.xi 103*53ee8cc1Swenshuai.xi #include <asm-generic/signal.h> 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi struct sigaction { 106*53ee8cc1Swenshuai.xi unsigned int sa_flags; 107*53ee8cc1Swenshuai.xi __sighandler_t sa_handler; 108*53ee8cc1Swenshuai.xi sigset_t sa_mask; 109*53ee8cc1Swenshuai.xi }; 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xi struct k_sigaction { 112*53ee8cc1Swenshuai.xi struct sigaction sa; 113*53ee8cc1Swenshuai.xi #ifdef CONFIG_BINFMT_IRIX 114*53ee8cc1Swenshuai.xi void (*sa_restorer)(void); 115*53ee8cc1Swenshuai.xi #endif 116*53ee8cc1Swenshuai.xi }; 117*53ee8cc1Swenshuai.xi 118*53ee8cc1Swenshuai.xi /* IRIX compatible stack_t */ 119*53ee8cc1Swenshuai.xi typedef struct sigaltstack { 120*53ee8cc1Swenshuai.xi void *ss_sp; 121*53ee8cc1Swenshuai.xi size_t ss_size; 122*53ee8cc1Swenshuai.xi int ss_flags; 123*53ee8cc1Swenshuai.xi } stack_t; 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi 126*53ee8cc1Swenshuai.xi #endif /* _ASM_SIGNAL_H */ 127