1*53ee8cc1Swenshuai.xi /* sys/signal.h */ 2*53ee8cc1Swenshuai.xi 3*53ee8cc1Swenshuai.xi #ifndef _SYS_SIGNAL_H 4*53ee8cc1Swenshuai.xi #define _SYS_SIGNAL_H 5*53ee8cc1Swenshuai.xi #ifdef __cplusplus 6*53ee8cc1Swenshuai.xi extern "C" { 7*53ee8cc1Swenshuai.xi #endif 8*53ee8cc1Swenshuai.xi 9*53ee8cc1Swenshuai.xi #include "_ansi.h" 10*53ee8cc1Swenshuai.xi #include <sys/features.h> 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi /* #ifndef __STRICT_ANSI__*/ 13*53ee8cc1Swenshuai.xi 14*53ee8cc1Swenshuai.xi #if defined(_POSIX_THREADS) 15*53ee8cc1Swenshuai.xi #include <sys/types.h> /* for pthread data types */ 16*53ee8cc1Swenshuai.xi #endif 17*53ee8cc1Swenshuai.xi 18*53ee8cc1Swenshuai.xi typedef unsigned long sigset_t; 19*53ee8cc1Swenshuai.xi 20*53ee8cc1Swenshuai.xi #if defined(__rtems__) 21*53ee8cc1Swenshuai.xi 22*53ee8cc1Swenshuai.xi #if defined(_POSIX_REALTIME_SIGNALS) 23*53ee8cc1Swenshuai.xi 24*53ee8cc1Swenshuai.xi /* sigev_notify values 25*53ee8cc1Swenshuai.xi NOTE: P1003.1c/D10, p. 34 adds SIGEV_THREAD. */ 26*53ee8cc1Swenshuai.xi 27*53ee8cc1Swenshuai.xi #define SIGEV_NONE 1 /* No asynchronous notification shall be delivered */ 28*53ee8cc1Swenshuai.xi /* when the event of interest occurs. */ 29*53ee8cc1Swenshuai.xi #define SIGEV_SIGNAL 2 /* A queued signal, with an application defined */ 30*53ee8cc1Swenshuai.xi /* value, shall be delivered when the event of */ 31*53ee8cc1Swenshuai.xi /* interest occurs. */ 32*53ee8cc1Swenshuai.xi #define SIGEV_THREAD 3 /* A notification function shall be called to */ 33*53ee8cc1Swenshuai.xi /* perform notification. */ 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi /* Signal Generation and Delivery, P1003.1b-1993, p. 63 36*53ee8cc1Swenshuai.xi NOTE: P1003.1c/D10, p. 34 adds sigev_notify_function and 37*53ee8cc1Swenshuai.xi sigev_notify_attributes to the sigevent structure. */ 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi union sigval { 40*53ee8cc1Swenshuai.xi int sival_int; /* Integer signal value */ 41*53ee8cc1Swenshuai.xi void *sival_ptr; /* Pointer signal value */ 42*53ee8cc1Swenshuai.xi }; 43*53ee8cc1Swenshuai.xi 44*53ee8cc1Swenshuai.xi struct sigevent { 45*53ee8cc1Swenshuai.xi int sigev_notify; /* Notification type */ 46*53ee8cc1Swenshuai.xi int sigev_signo; /* Signal number */ 47*53ee8cc1Swenshuai.xi union sigval sigev_value; /* Signal value */ 48*53ee8cc1Swenshuai.xi 49*53ee8cc1Swenshuai.xi #if defined(_POSIX_THREADS) 50*53ee8cc1Swenshuai.xi void (*sigev_notify_function)( union sigval ); 51*53ee8cc1Swenshuai.xi /* Notification function */ 52*53ee8cc1Swenshuai.xi pthread_attr_t *sigev_notify_attributes; /* Notification Attributes */ 53*53ee8cc1Swenshuai.xi #endif 54*53ee8cc1Swenshuai.xi }; 55*53ee8cc1Swenshuai.xi 56*53ee8cc1Swenshuai.xi /* Signal Actions, P1003.1b-1993, p. 64 */ 57*53ee8cc1Swenshuai.xi /* si_code values, p. 66 */ 58*53ee8cc1Swenshuai.xi 59*53ee8cc1Swenshuai.xi #define SI_USER 1 /* Sent by a user. kill(), abort(), etc */ 60*53ee8cc1Swenshuai.xi #define SI_QUEUE 2 /* Sent by sigqueue() */ 61*53ee8cc1Swenshuai.xi #define SI_TIMER 3 /* Sent by expiration of a timer_settime() timer */ 62*53ee8cc1Swenshuai.xi #define SI_ASYNCIO 4 /* Indicates completion of asycnhronous IO */ 63*53ee8cc1Swenshuai.xi #define SI_MESGQ 5 /* Indicates arrival of a message at an empty queue */ 64*53ee8cc1Swenshuai.xi 65*53ee8cc1Swenshuai.xi typedef struct { 66*53ee8cc1Swenshuai.xi int si_signo; /* Signal number */ 67*53ee8cc1Swenshuai.xi int si_code; /* Cause of the signal */ 68*53ee8cc1Swenshuai.xi union sigval si_value; /* Signal value */ 69*53ee8cc1Swenshuai.xi } siginfo_t; 70*53ee8cc1Swenshuai.xi #endif 71*53ee8cc1Swenshuai.xi 72*53ee8cc1Swenshuai.xi /* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 */ 73*53ee8cc1Swenshuai.xi 74*53ee8cc1Swenshuai.xi #define SA_NOCLDSTOP 1 /* Do not generate SIGCHLD when children stop */ 75*53ee8cc1Swenshuai.xi #define SA_SIGINFO 2 /* Invoke the signal catching function with */ 76*53ee8cc1Swenshuai.xi /* three arguments instead of one. */ 77*53ee8cc1Swenshuai.xi 78*53ee8cc1Swenshuai.xi /* struct sigaction notes from POSIX: 79*53ee8cc1Swenshuai.xi * 80*53ee8cc1Swenshuai.xi * (1) Routines stored in sa_handler should take a single int as 81*53ee8cc1Swenshuai.xi * their argument although the POSIX standard does not require this. 82*53ee8cc1Swenshuai.xi * (2) The fields sa_handler and sa_sigaction may overlap, and a conforming 83*53ee8cc1Swenshuai.xi * application should not use both simultaneously. 84*53ee8cc1Swenshuai.xi */ 85*53ee8cc1Swenshuai.xi 86*53ee8cc1Swenshuai.xi typedef void (*_sig_func_ptr)(); 87*53ee8cc1Swenshuai.xi 88*53ee8cc1Swenshuai.xi struct sigaction { 89*53ee8cc1Swenshuai.xi int sa_flags; /* Special flags to affect behavior of signal */ 90*53ee8cc1Swenshuai.xi sigset_t sa_mask; /* Additional set of signals to be blocked */ 91*53ee8cc1Swenshuai.xi /* during execution of signal-catching */ 92*53ee8cc1Swenshuai.xi /* function. */ 93*53ee8cc1Swenshuai.xi union { 94*53ee8cc1Swenshuai.xi _sig_func_ptr _handler; /* SIG_DFL, SIG_IGN, or pointer to a function */ 95*53ee8cc1Swenshuai.xi #if defined(_POSIX_REALTIME_SIGNALS) 96*53ee8cc1Swenshuai.xi void (*_sigaction)( int, siginfo_t *, void * ); 97*53ee8cc1Swenshuai.xi #endif 98*53ee8cc1Swenshuai.xi } _signal_handlers; 99*53ee8cc1Swenshuai.xi }; 100*53ee8cc1Swenshuai.xi 101*53ee8cc1Swenshuai.xi #define sa_handler _signal_handlers._handler 102*53ee8cc1Swenshuai.xi #if defined(_POSIX_REALTIME_SIGNALS) 103*53ee8cc1Swenshuai.xi #define sa_sigaction _signal_handlers._sigaction 104*53ee8cc1Swenshuai.xi #endif 105*53ee8cc1Swenshuai.xi 106*53ee8cc1Swenshuai.xi #elif defined(__CYGWIN__) 107*53ee8cc1Swenshuai.xi #include <cygwin/signal.h> 108*53ee8cc1Swenshuai.xi #else 109*53ee8cc1Swenshuai.xi #define SA_NOCLDSTOP 1 /* only value supported now for sa_flags */ 110*53ee8cc1Swenshuai.xi 111*53ee8cc1Swenshuai.xi typedef void (*_sig_func_ptr)(int); 112*53ee8cc1Swenshuai.xi 113*53ee8cc1Swenshuai.xi struct sigaction 114*53ee8cc1Swenshuai.xi { 115*53ee8cc1Swenshuai.xi _sig_func_ptr sa_handler; 116*53ee8cc1Swenshuai.xi sigset_t sa_mask; 117*53ee8cc1Swenshuai.xi int sa_flags; 118*53ee8cc1Swenshuai.xi }; 119*53ee8cc1Swenshuai.xi #endif /* defined(__rtems__) */ 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi #define SIG_SETMASK 0 /* set mask with sigprocmask() */ 122*53ee8cc1Swenshuai.xi #define SIG_BLOCK 1 /* set of signals to block */ 123*53ee8cc1Swenshuai.xi #define SIG_UNBLOCK 2 /* set of signals to, well, unblock */ 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi /* These depend upon the type of sigset_t, which right now 126*53ee8cc1Swenshuai.xi is always a long.. They're in the POSIX namespace, but 127*53ee8cc1Swenshuai.xi are not ANSI. */ 128*53ee8cc1Swenshuai.xi #define sigaddset(what,sig) (*(what) |= (1<<(sig))) 129*53ee8cc1Swenshuai.xi #define sigemptyset(what) (*(what) = 0) 130*53ee8cc1Swenshuai.xi 131*53ee8cc1Swenshuai.xi int _EXFUN(sigprocmask, (int how, const sigset_t *set, sigset_t *oset)); 132*53ee8cc1Swenshuai.xi 133*53ee8cc1Swenshuai.xi #if defined(_POSIX_THREADS) 134*53ee8cc1Swenshuai.xi int _EXFUN(pthread_sigmask, (int how, const sigset_t *set, sigset_t *oset)); 135*53ee8cc1Swenshuai.xi #endif 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi /* protos for functions found in winsup sources for CYGWIN */ 138*53ee8cc1Swenshuai.xi #if defined(__CYGWIN__) || defined(__rtems__) 139*53ee8cc1Swenshuai.xi #undef sigaddset 140*53ee8cc1Swenshuai.xi #undef sigemptyset 141*53ee8cc1Swenshuai.xi /* The first argument to kill should be pid_t. Right now 142*53ee8cc1Swenshuai.xi <sys/types.h> always defines pid_t to be int. If that ever 143*53ee8cc1Swenshuai.xi changes, then we will need to do something else, perhaps along the 144*53ee8cc1Swenshuai.xi lines of <machine/types.h>. */ 145*53ee8cc1Swenshuai.xi int _EXFUN(kill, (int, int)); 146*53ee8cc1Swenshuai.xi int _EXFUN(killpg, (pid_t, int)); 147*53ee8cc1Swenshuai.xi int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *)); 148*53ee8cc1Swenshuai.xi int _EXFUN(sigaddset, (sigset_t *, const int)); 149*53ee8cc1Swenshuai.xi int _EXFUN(sigdelset, (sigset_t *, const int)); 150*53ee8cc1Swenshuai.xi int _EXFUN(sigismember, (const sigset_t *, int)); 151*53ee8cc1Swenshuai.xi int _EXFUN(sigfillset, (sigset_t *)); 152*53ee8cc1Swenshuai.xi int _EXFUN(sigemptyset, (sigset_t *)); 153*53ee8cc1Swenshuai.xi int _EXFUN(sigpending, (sigset_t *)); 154*53ee8cc1Swenshuai.xi int _EXFUN(sigsuspend, (const sigset_t *)); 155*53ee8cc1Swenshuai.xi int _EXFUN(sigpause, (int)); 156*53ee8cc1Swenshuai.xi 157*53ee8cc1Swenshuai.xi #if defined(_POSIX_THREADS) 158*53ee8cc1Swenshuai.xi #ifdef __CYGWIN__ 159*53ee8cc1Swenshuai.xi # ifndef _CYGWIN_TYPES_H 160*53ee8cc1Swenshuai.xi # error You need the winsup sources or a cygwin installation to compile the cygwin version of newlib. 161*53ee8cc1Swenshuai.xi # endif 162*53ee8cc1Swenshuai.xi #endif 163*53ee8cc1Swenshuai.xi int _EXFUN(pthread_kill, (pthread_t thread, int sig)); 164*53ee8cc1Swenshuai.xi #endif 165*53ee8cc1Swenshuai.xi 166*53ee8cc1Swenshuai.xi #if defined(_POSIX_REALTIME_SIGNALS) 167*53ee8cc1Swenshuai.xi 168*53ee8cc1Swenshuai.xi /* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 169*53ee8cc1Swenshuai.xi NOTE: P1003.1c/D10, p. 39 adds sigwait(). */ 170*53ee8cc1Swenshuai.xi 171*53ee8cc1Swenshuai.xi int _EXFUN(sigwaitinfo, (const sigset_t *set, siginfo_t *info)); 172*53ee8cc1Swenshuai.xi int _EXFUN(sigtimedwait, 173*53ee8cc1Swenshuai.xi (const sigset_t *set, siginfo_t *info, const struct timespec *timeout) 174*53ee8cc1Swenshuai.xi ); 175*53ee8cc1Swenshuai.xi int _EXFUN(sigwait, (const sigset_t *set, int *sig)); 176*53ee8cc1Swenshuai.xi 177*53ee8cc1Swenshuai.xi /* 3.3.9 Queue a Signal to a Process, P1003.1b-1993, p. 78 */ 178*53ee8cc1Swenshuai.xi int _EXFUN(sigqueue, (pid_t pid, int signo, const union sigval value)); 179*53ee8cc1Swenshuai.xi 180*53ee8cc1Swenshuai.xi #endif /* defined(_POSIX_REALTIME_SIGNALS) */ 181*53ee8cc1Swenshuai.xi 182*53ee8cc1Swenshuai.xi #endif /* defined(__CYGWIN__) || defined(__rtems__) */ 183*53ee8cc1Swenshuai.xi 184*53ee8cc1Swenshuai.xi /* #endif __STRICT_ANSI__ */ 185*53ee8cc1Swenshuai.xi 186*53ee8cc1Swenshuai.xi #if defined(___AM29K__) 187*53ee8cc1Swenshuai.xi /* These all need to be defined for ANSI C, but I don't think they are 188*53ee8cc1Swenshuai.xi meaningful. */ 189*53ee8cc1Swenshuai.xi #define SIGABRT 1 190*53ee8cc1Swenshuai.xi #define SIGFPE 1 191*53ee8cc1Swenshuai.xi #define SIGILL 1 192*53ee8cc1Swenshuai.xi #define SIGINT 1 193*53ee8cc1Swenshuai.xi #define SIGSEGV 1 194*53ee8cc1Swenshuai.xi #define SIGTERM 1 195*53ee8cc1Swenshuai.xi /* These need to be defined for POSIX, and some others do too. */ 196*53ee8cc1Swenshuai.xi #define SIGHUP 1 197*53ee8cc1Swenshuai.xi #define SIGQUIT 1 198*53ee8cc1Swenshuai.xi #define NSIG 2 199*53ee8cc1Swenshuai.xi #elif defined(__GO32__) 200*53ee8cc1Swenshuai.xi #define SIGINT 1 201*53ee8cc1Swenshuai.xi #define SIGKILL 2 202*53ee8cc1Swenshuai.xi #define SIGPIPE 3 203*53ee8cc1Swenshuai.xi #define SIGFPE 4 204*53ee8cc1Swenshuai.xi #define SIGHUP 5 205*53ee8cc1Swenshuai.xi #define SIGTERM 6 206*53ee8cc1Swenshuai.xi #define SIGSEGV 7 207*53ee8cc1Swenshuai.xi #define SIGTSTP 8 208*53ee8cc1Swenshuai.xi #define SIGQUIT 9 209*53ee8cc1Swenshuai.xi #define SIGTRAP 10 210*53ee8cc1Swenshuai.xi #define SIGILL 11 211*53ee8cc1Swenshuai.xi #define SIGEMT 12 212*53ee8cc1Swenshuai.xi #define SIGALRM 13 213*53ee8cc1Swenshuai.xi #define SIGBUS 14 214*53ee8cc1Swenshuai.xi #define SIGLOST 15 215*53ee8cc1Swenshuai.xi #define SIGSTOP 16 216*53ee8cc1Swenshuai.xi #define SIGABRT 17 217*53ee8cc1Swenshuai.xi #define SIGUSR1 18 218*53ee8cc1Swenshuai.xi #define SIGUSR2 19 219*53ee8cc1Swenshuai.xi #define NSIG 20 220*53ee8cc1Swenshuai.xi #elif !defined(SIGTRAP) 221*53ee8cc1Swenshuai.xi #define SIGHUP 1 /* hangup */ 222*53ee8cc1Swenshuai.xi #define SIGINT 2 /* interrupt */ 223*53ee8cc1Swenshuai.xi #define SIGQUIT 3 /* quit */ 224*53ee8cc1Swenshuai.xi #define SIGILL 4 /* illegal instruction (not reset when caught) */ 225*53ee8cc1Swenshuai.xi #define SIGTRAP 5 /* trace trap (not reset when caught) */ 226*53ee8cc1Swenshuai.xi #define SIGIOT 6 /* IOT instruction */ 227*53ee8cc1Swenshuai.xi #define SIGABRT 6 /* used by abort, replace SIGIOT in the future */ 228*53ee8cc1Swenshuai.xi #define SIGEMT 7 /* EMT instruction */ 229*53ee8cc1Swenshuai.xi #define SIGFPE 8 /* floating point exception */ 230*53ee8cc1Swenshuai.xi #define SIGKILL 9 /* kill (cannot be caught or ignored) */ 231*53ee8cc1Swenshuai.xi #define SIGBUS 10 /* bus error */ 232*53ee8cc1Swenshuai.xi #define SIGSEGV 11 /* segmentation violation */ 233*53ee8cc1Swenshuai.xi #define SIGSYS 12 /* bad argument to system call */ 234*53ee8cc1Swenshuai.xi #define SIGPIPE 13 /* write on a pipe with no one to read it */ 235*53ee8cc1Swenshuai.xi #define SIGALRM 14 /* alarm clock */ 236*53ee8cc1Swenshuai.xi #define SIGTERM 15 /* software termination signal from kill */ 237*53ee8cc1Swenshuai.xi 238*53ee8cc1Swenshuai.xi #if defined(__rtems__) 239*53ee8cc1Swenshuai.xi #define SIGURG 16 /* urgent condition on IO channel */ 240*53ee8cc1Swenshuai.xi #define SIGSTOP 17 /* sendable stop signal not from tty */ 241*53ee8cc1Swenshuai.xi #define SIGTSTP 18 /* stop signal from tty */ 242*53ee8cc1Swenshuai.xi #define SIGCONT 19 /* continue a stopped process */ 243*53ee8cc1Swenshuai.xi #define SIGCHLD 20 /* to parent on child stop or exit */ 244*53ee8cc1Swenshuai.xi #define SIGCLD 20 /* System V name for SIGCHLD */ 245*53ee8cc1Swenshuai.xi #define SIGTTIN 21 /* to readers pgrp upon background tty read */ 246*53ee8cc1Swenshuai.xi #define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */ 247*53ee8cc1Swenshuai.xi #define SIGIO 23 /* input/output possible signal */ 248*53ee8cc1Swenshuai.xi #define SIGPOLL SIGIO /* System V name for SIGIO */ 249*53ee8cc1Swenshuai.xi #define SIGWINCH 24 /* window changed */ 250*53ee8cc1Swenshuai.xi #define SIGUSR1 25 /* user defined signal 1 */ 251*53ee8cc1Swenshuai.xi #define SIGUSR2 26 /* user defined signal 2 */ 252*53ee8cc1Swenshuai.xi 253*53ee8cc1Swenshuai.xi /* Real-Time Signals Range, P1003.1b-1993, p. 61 254*53ee8cc1Swenshuai.xi NOTE: By P1003.1b-1993, this should be at least RTSIG_MAX 255*53ee8cc1Swenshuai.xi (which is a minimum of 8) signals. 256*53ee8cc1Swenshuai.xi */ 257*53ee8cc1Swenshuai.xi #define SIGRTMIN 27 258*53ee8cc1Swenshuai.xi #define SIGRTMAX 31 259*53ee8cc1Swenshuai.xi #define __SIGFIRSTNOTRT SIGHUP 260*53ee8cc1Swenshuai.xi #define __SIGLASTNOTRT SIGUSR2 261*53ee8cc1Swenshuai.xi 262*53ee8cc1Swenshuai.xi #define NSIG 32 /* signal 0 implied */ 263*53ee8cc1Swenshuai.xi 264*53ee8cc1Swenshuai.xi #elif defined(__svr4__) 265*53ee8cc1Swenshuai.xi /* svr4 specifics. different signals above 15, and sigaction. */ 266*53ee8cc1Swenshuai.xi #define SIGUSR1 16 267*53ee8cc1Swenshuai.xi #define SIGUSR2 17 268*53ee8cc1Swenshuai.xi #define SIGCLD 18 269*53ee8cc1Swenshuai.xi #define SIGPWR 19 270*53ee8cc1Swenshuai.xi #define SIGWINCH 20 271*53ee8cc1Swenshuai.xi #define SIGPOLL 22 /* 20 for x.out binaries!!!! */ 272*53ee8cc1Swenshuai.xi #define SIGSTOP 23 /* sendable stop signal not from tty */ 273*53ee8cc1Swenshuai.xi #define SIGTSTP 24 /* stop signal from tty */ 274*53ee8cc1Swenshuai.xi #define SIGCONT 25 /* continue a stopped process */ 275*53ee8cc1Swenshuai.xi #define SIGTTIN 26 /* to readers pgrp upon background tty read */ 276*53ee8cc1Swenshuai.xi #define SIGTTOU 27 /* like TTIN for output if (tp->t_local<OSTOP) */ 277*53ee8cc1Swenshuai.xi #define NSIG 28 278*53ee8cc1Swenshuai.xi #else 279*53ee8cc1Swenshuai.xi #define SIGURG 16 /* urgent condition on IO channel */ 280*53ee8cc1Swenshuai.xi #define SIGSTOP 17 /* sendable stop signal not from tty */ 281*53ee8cc1Swenshuai.xi #define SIGTSTP 18 /* stop signal from tty */ 282*53ee8cc1Swenshuai.xi #define SIGCONT 19 /* continue a stopped process */ 283*53ee8cc1Swenshuai.xi #define SIGCHLD 20 /* to parent on child stop or exit */ 284*53ee8cc1Swenshuai.xi #define SIGCLD 20 /* System V name for SIGCHLD */ 285*53ee8cc1Swenshuai.xi #define SIGTTIN 21 /* to readers pgrp upon background tty read */ 286*53ee8cc1Swenshuai.xi #define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */ 287*53ee8cc1Swenshuai.xi #define SIGIO 23 /* input/output possible signal */ 288*53ee8cc1Swenshuai.xi #define SIGPOLL SIGIO /* System V name for SIGIO */ 289*53ee8cc1Swenshuai.xi #define SIGXCPU 24 /* exceeded CPU time limit */ 290*53ee8cc1Swenshuai.xi #define SIGXFSZ 25 /* exceeded file size limit */ 291*53ee8cc1Swenshuai.xi #define SIGVTALRM 26 /* virtual time alarm */ 292*53ee8cc1Swenshuai.xi #define SIGPROF 27 /* profiling time alarm */ 293*53ee8cc1Swenshuai.xi #define SIGWINCH 28 /* window changed */ 294*53ee8cc1Swenshuai.xi #define SIGLOST 29 /* resource lost (eg, record-lock lost) */ 295*53ee8cc1Swenshuai.xi #define SIGUSR1 30 /* user defined signal 1 */ 296*53ee8cc1Swenshuai.xi #define SIGUSR2 31 /* user defined signal 2 */ 297*53ee8cc1Swenshuai.xi #define NSIG 32 /* signal 0 implied */ 298*53ee8cc1Swenshuai.xi #endif 299*53ee8cc1Swenshuai.xi #endif 300*53ee8cc1Swenshuai.xi 301*53ee8cc1Swenshuai.xi #ifdef __cplusplus 302*53ee8cc1Swenshuai.xi } 303*53ee8cc1Swenshuai.xi #endif 304*53ee8cc1Swenshuai.xi 305*53ee8cc1Swenshuai.xi #ifndef _SIGNAL_H_ 306*53ee8cc1Swenshuai.xi /* Some applications take advantage of the fact that <sys/signal.h> 307*53ee8cc1Swenshuai.xi * and <signal.h> are equivalent in glibc. Allow for that here. */ 308*53ee8cc1Swenshuai.xi #include <signal.h> 309*53ee8cc1Swenshuai.xi #endif 310*53ee8cc1Swenshuai.xi #endif /* _SYS_SIGNAL_H */ 311