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