1*53ee8cc1Swenshuai.xi /* The proper definitions for Linux/MIPS's sigaction. 2*53ee8cc1Swenshuai.xi Copyright (C) 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2003 3*53ee8cc1Swenshuai.xi Free Software Foundation, Inc. 4*53ee8cc1Swenshuai.xi This file is part of the GNU C Library. 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi The GNU C Library is free software; you can redistribute it and/or 7*53ee8cc1Swenshuai.xi modify it under the terms of the GNU Lesser General Public 8*53ee8cc1Swenshuai.xi License as published by the Free Software Foundation; either 9*53ee8cc1Swenshuai.xi version 2.1 of the License, or (at your option) any later version. 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi The GNU C Library is distributed in the hope that it will be useful, 12*53ee8cc1Swenshuai.xi but WITHOUT ANY WARRANTY; without even the implied warranty of 13*53ee8cc1Swenshuai.xi MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*53ee8cc1Swenshuai.xi Lesser General Public License for more details. 15*53ee8cc1Swenshuai.xi 16*53ee8cc1Swenshuai.xi You should have received a copy of the GNU Lesser General Public 17*53ee8cc1Swenshuai.xi License along with the GNU C Library; if not, write to the Free 18*53ee8cc1Swenshuai.xi Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 19*53ee8cc1Swenshuai.xi 02111-1307 USA. */ 20*53ee8cc1Swenshuai.xi 21*53ee8cc1Swenshuai.xi #ifndef _SIGNAL_H 22*53ee8cc1Swenshuai.xi # error "Never include <bits/sigaction.h> directly; use <signal.h> instead." 23*53ee8cc1Swenshuai.xi #endif 24*53ee8cc1Swenshuai.xi 25*53ee8cc1Swenshuai.xi /* Structure describing the action to be taken when a signal arrives. */ 26*53ee8cc1Swenshuai.xi struct sigaction 27*53ee8cc1Swenshuai.xi { 28*53ee8cc1Swenshuai.xi /* Special flags. */ 29*53ee8cc1Swenshuai.xi unsigned int sa_flags; 30*53ee8cc1Swenshuai.xi 31*53ee8cc1Swenshuai.xi /* Signal handler. */ 32*53ee8cc1Swenshuai.xi #ifdef __USE_POSIX199309 33*53ee8cc1Swenshuai.xi union 34*53ee8cc1Swenshuai.xi { 35*53ee8cc1Swenshuai.xi /* Used if SA_SIGINFO is not set. */ 36*53ee8cc1Swenshuai.xi __sighandler_t sa_handler; 37*53ee8cc1Swenshuai.xi /* Used if SA_SIGINFO is set. */ 38*53ee8cc1Swenshuai.xi void (*sa_sigaction) (int, siginfo_t *, void *); 39*53ee8cc1Swenshuai.xi } 40*53ee8cc1Swenshuai.xi __sigaction_handler; 41*53ee8cc1Swenshuai.xi # define sa_handler __sigaction_handler.sa_handler 42*53ee8cc1Swenshuai.xi # define sa_sigaction __sigaction_handler.sa_sigaction 43*53ee8cc1Swenshuai.xi #else 44*53ee8cc1Swenshuai.xi __sighandler_t sa_handler; 45*53ee8cc1Swenshuai.xi #endif 46*53ee8cc1Swenshuai.xi /* Additional set of signals to be blocked. */ 47*53ee8cc1Swenshuai.xi __sigset_t sa_mask; 48*53ee8cc1Swenshuai.xi 49*53ee8cc1Swenshuai.xi /* The ABI says here are two unused ints following. */ 50*53ee8cc1Swenshuai.xi /* Restore handler. */ 51*53ee8cc1Swenshuai.xi void (*sa_restorer) (void); 52*53ee8cc1Swenshuai.xi 53*53ee8cc1Swenshuai.xi #if _MIPS_SZPTR < 64 54*53ee8cc1Swenshuai.xi int sa_resv[1]; 55*53ee8cc1Swenshuai.xi #endif 56*53ee8cc1Swenshuai.xi }; 57*53ee8cc1Swenshuai.xi 58*53ee8cc1Swenshuai.xi /* Bits in `sa_flags'. */ 59*53ee8cc1Swenshuai.xi /* Please note that some Linux kernels versions use different values for these 60*53ee8cc1Swenshuai.xi flags which is a bug in those kernel versions. */ 61*53ee8cc1Swenshuai.xi #define SA_NOCLDSTOP 0x00000001 /* Don't send SIGCHLD when children stop. */ 62*53ee8cc1Swenshuai.xi #define SA_NOCLDWAIT 0x00010000 /* Don't create zombie on child death. */ 63*53ee8cc1Swenshuai.xi #define SA_SIGINFO 0x00000008 /* Invoke signal-catching function with 64*53ee8cc1Swenshuai.xi three arguments instead of one. */ 65*53ee8cc1Swenshuai.xi #if defined __USE_UNIX98 || defined __USE_MISC 66*53ee8cc1Swenshuai.xi # define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ 67*53ee8cc1Swenshuai.xi # define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */ 68*53ee8cc1Swenshuai.xi # define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ 69*53ee8cc1Swenshuai.xi # define SA_NODEFER 0x40000000 /* Don't automatically block the signal when 70*53ee8cc1Swenshuai.xi its handler is being executed. */ 71*53ee8cc1Swenshuai.xi #endif 72*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 73*53ee8cc1Swenshuai.xi # define SA_INTERRUPT 0x20000000 /* Historical no-op. */ 74*53ee8cc1Swenshuai.xi 75*53ee8cc1Swenshuai.xi /* Some aliases for the SA_ constants. */ 76*53ee8cc1Swenshuai.xi # define SA_NOMASK SA_NODEFER 77*53ee8cc1Swenshuai.xi # define SA_ONESHOT SA_RESETHAND 78*53ee8cc1Swenshuai.xi # define SA_STACK SA_ONSTACK 79*53ee8cc1Swenshuai.xi #endif 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi /* Values for the HOW argument to `sigprocmask'. */ 82*53ee8cc1Swenshuai.xi #define SIG_NOP 0 /* 0 is unused to catch errors */ 83*53ee8cc1Swenshuai.xi #define SIG_BLOCK 1 /* Block signals. */ 84*53ee8cc1Swenshuai.xi #define SIG_UNBLOCK 2 /* Unblock signals. */ 85*53ee8cc1Swenshuai.xi #define SIG_SETMASK 3 /* Set the set of blocked signals. */ 86*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 87*53ee8cc1Swenshuai.xi # define SIG_SETMASK32 256 /* Goodie from SGI for BSD compatibility: 88*53ee8cc1Swenshuai.xi set only the low 32 bit of the sigset. */ 89*53ee8cc1Swenshuai.xi #endif 90