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