1 #ifndef __SIGNAL_H 2 #define __SIGNAL_H 3 #pragma lib "/$M/lib/ape/libap.a" 4 5 typedef int sig_atomic_t; 6 7 /* 8 * We don't give arg types for signal handlers, in spite of ANSI requirement 9 * that it be 'int' (the signal number), because some programs need an 10 * additional context argument. So the real type of signal handlers is 11 * void handler(int sig, char *, struct Ureg *) 12 * where the char * is the Plan 9 message and Ureg is defined in <ureg.h> 13 */ 14 #define SIG_DFL ((void (*)())0) 15 #define SIG_ERR ((void (*)())-1) 16 #define SIG_IGN ((void (*)())1) 17 18 #define SIGHUP 1 /* hangup */ 19 #define SIGINT 2 /* interrupt */ 20 #define SIGQUIT 3 /* quit */ 21 #define SIGILL 4 /* illegal instruction (not reset when caught)*/ 22 #define SIGABRT 5 /* used by abort */ 23 #define SIGFPE 6 /* floating point exception */ 24 #define SIGKILL 7 /* kill (cannot be caught or ignored) */ 25 #define SIGSEGV 8 /* segmentation violation */ 26 #define SIGPIPE 9 /* write on a pipe with no one to read it */ 27 #define SIGALRM 10 /* alarm clock */ 28 #define SIGTERM 11 /* software termination signal from kill */ 29 #define SIGUSR1 12 /* user defined signal 1 */ 30 #define SIGUSR2 13 /* user defined signal 2 */ 31 #define SIGBUS 14 /* bus error */ 32 33 /* The following symbols must be defined, but the signals needn't be supported */ 34 #define SIGCHLD 15 /* child process terminated or stopped */ 35 #define SIGCONT 16 /* continue if stopped */ 36 #define SIGSTOP 17 /* stop */ 37 #define SIGTSTP 18 /* interactive stop */ 38 #define SIGTTIN 19 /* read from ctl tty by member of background */ 39 #define SIGTTOU 20 /* write to ctl tty by member of background */ 40 41 #ifdef _BSD_EXTENSION 42 #define NSIG 21 43 #endif 44 45 #ifdef __cplusplus 46 extern "C" { 47 #endif 48 49 extern void (*signal(int, void (*)()))(); 50 extern int raise(int); 51 52 #ifdef __cplusplus 53 } 54 #endif 55 56 #ifdef _POSIX_SOURCE 57 58 typedef long sigset_t; 59 struct sigaction { 60 void (*sa_handler)(); 61 sigset_t sa_mask; 62 int sa_flags; 63 }; 64 /* values for sa_flags */ 65 #define SA_NOCLDSTOP 1 66 67 /* first argument to sigprocmask */ 68 #define SIG_BLOCK 1 69 #define SIG_UNBLOCK 2 70 #define SIG_SETMASK 3 71 72 #ifdef __cplusplus 73 extern "C" { 74 #endif 75 76 #ifdef __TYPES_H 77 extern int kill(pid_t, int); 78 #endif 79 extern int sigemptyset(sigset_t *); 80 extern int sigfillset(sigset_t *); 81 extern int sigaddset(sigset_t *, int); 82 extern int sigdelset(sigset_t *, int); 83 extern int sigismember(const sigset_t *, int); 84 extern int sigaction(int, const struct sigaction *, struct sigaction *); 85 extern int sigprocmask(int, sigset_t *, sigset_t *); 86 extern int sigpending(sigset_t *); 87 extern int sigsuspend(const sigset_t *); 88 89 #ifdef __cplusplus 90 } 91 #endif 92 93 #endif /* _POSIX_SOURCE */ 94 95 #endif /* __SIGNAL_H */ 96