|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982, 1986, 1989, 1991 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms, with or without ! 6: * modification, are permitted provided that the following conditions ! 7: * are met: ! 8: * 1. Redistributions of source code must retain the above copyright ! 9: * notice, this list of conditions and the following disclaimer. ! 10: * 2. Redistributions in binary form must reproduce the above copyright ! 11: * notice, this list of conditions and the following disclaimer in the ! 12: * documentation and/or other materials provided with the distribution. ! 13: * 3. All advertising materials mentioning features or use of this software ! 14: * must display the following acknowledgement: ! 15: * This product includes software developed by the University of ! 16: * California, Berkeley and its contributors. ! 17: * 4. Neither the name of the University nor the names of its contributors ! 18: * may be used to endorse or promote products derived from this software ! 19: * without specific prior written permission. ! 20: * ! 21: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 31: * SUCH DAMAGE. ! 32: * ! 33: * @(#)signal.h 7.16 (Berkeley) 3/17/91 ! 34: */ ! 35: ! 36: #ifndef _SIGNAL_H_ ! 37: #define _SIGNAL_H_ ! 38: ! 39: #define NSIG 32 /* counting 0; could be 33 (mask is 1-32) */ ! 40: ! 41: #ifndef _POSIX_SOURCE ! 42: #include <machine/trap.h> /* codes for SIGILL, SIGFPE */ ! 43: #endif /* _POSIX_SOURCE */ ! 44: ! 45: #define SIGHUP 1 /* hangup */ ! 46: #define SIGINT 2 /* interrupt */ ! 47: #define SIGQUIT 3 /* quit */ ! 48: #define SIGILL 4 /* illegal instruction (not reset when caught) */ ! 49: #ifndef _POSIX_SOURCE ! 50: #define SIGTRAP 5 /* trace trap (not reset when caught) */ ! 51: #endif ! 52: #define SIGABRT 6 /* abort() */ ! 53: #ifndef _POSIX_SOURCE ! 54: #define SIGIOT SIGABRT /* compatibility */ ! 55: #define SIGEMT 7 /* EMT instruction */ ! 56: #endif ! 57: #define SIGFPE 8 /* floating point exception */ ! 58: #define SIGKILL 9 /* kill (cannot be caught or ignored) */ ! 59: #ifndef _POSIX_SOURCE ! 60: #define SIGBUS 10 /* bus error */ ! 61: #endif ! 62: #define SIGSEGV 11 /* segmentation violation */ ! 63: #ifndef _POSIX_SOURCE ! 64: #define SIGSYS 12 /* bad argument to system call */ ! 65: #endif ! 66: #define SIGPIPE 13 /* write on a pipe with no one to read it */ ! 67: #define SIGALRM 14 /* alarm clock */ ! 68: #define SIGTERM 15 /* software termination signal from kill */ ! 69: #ifndef _POSIX_SOURCE ! 70: #define SIGURG 16 /* urgent condition on IO channel */ ! 71: #endif ! 72: #define SIGSTOP 17 /* sendable stop signal not from tty */ ! 73: #define SIGTSTP 18 /* stop signal from tty */ ! 74: #define SIGCONT 19 /* continue a stopped process */ ! 75: #define SIGCHLD 20 /* to parent on child stop or exit */ ! 76: #define SIGTTIN 21 /* to readers pgrp upon background tty read */ ! 77: #define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */ ! 78: #ifndef _POSIX_SOURCE ! 79: #define SIGIO 23 /* input/output possible signal */ ! 80: #define SIGXCPU 24 /* exceeded CPU time limit */ ! 81: #define SIGXFSZ 25 /* exceeded file size limit */ ! 82: #define SIGVTALRM 26 /* virtual time alarm */ ! 83: #define SIGPROF 27 /* profiling time alarm */ ! 84: #define SIGWINCH 28 /* window size changes */ ! 85: #define SIGINFO 29 /* information request */ ! 86: #endif ! 87: #define SIGUSR1 30 /* user defined signal 1 */ ! 88: #define SIGUSR2 31 /* user defined signal 2 */ ! 89: ! 90: #include <sys/cdefs.h> ! 91: ! 92: #ifndef _POSIX_SOURCE ! 93: typedef void (*sig_t) __P((int)); ! 94: #endif ! 95: ! 96: typedef unsigned int sigset_t; ! 97: ! 98: __BEGIN_DECLS ! 99: int sigaddset __P((sigset_t *, int)); ! 100: int sigdelset __P((sigset_t *, int)); ! 101: int sigemptyset __P((sigset_t *)); ! 102: int sigfillset __P((sigset_t *)); ! 103: int sigismember __P((const sigset_t *, int)); ! 104: __END_DECLS ! 105: ! 106: #define sigemptyset(set) ( *(set) = 0 ) ! 107: #define sigfillset(set) ( *(set) = ~(sigset_t)0, 0 ) ! 108: #define sigaddset(set, signo) ( *(set) |= 1 << ((signo) - 1), 0) ! 109: #define sigdelset(set, signo) ( *(set) &= ~(1 << ((signo) - 1)), 0) ! 110: #define sigismember(set, signo) ( (*(set) & (1 << ((signo) - 1))) != 0) ! 111: ! 112: /* ! 113: * Signal vector "template" used in sigaction call. ! 114: */ ! 115: struct sigaction { ! 116: void (*sa_handler)(); /* signal handler */ ! 117: sigset_t sa_mask; /* signal mask to apply */ ! 118: int sa_flags; /* see signal options below */ ! 119: }; ! 120: #ifndef _POSIX_SOURCE ! 121: #define SA_ONSTACK 0x0001 /* take signal on signal stack */ ! 122: #define SA_RESTART 0x0002 /* do not restart system on signal return */ ! 123: #endif ! 124: #define SA_NOCLDSTOP 0x0004 /* do not generate SIGCHLD on child stop */ ! 125: ! 126: /* ! 127: * Flags for sigprocmask: ! 128: */ ! 129: #define SIG_BLOCK 1 /* block specified signal set */ ! 130: #define SIG_UNBLOCK 2 /* unblock specified signal set */ ! 131: #define SIG_SETMASK 3 /* set specified signal set */ ! 132: ! 133: #ifndef _POSIX_SOURCE ! 134: /* ! 135: * 4.3 compatibility: ! 136: * Signal vector "template" used in sigvec call. ! 137: */ ! 138: struct sigvec { ! 139: void (*sv_handler)(); /* signal handler */ ! 140: int sv_mask; /* signal mask to apply */ ! 141: int sv_flags; /* see signal options below */ ! 142: }; ! 143: #define SV_ONSTACK SA_ONSTACK ! 144: #define SV_INTERRUPT SA_RESTART /* same bit, opposite sense */ ! 145: #define sv_onstack sv_flags /* isn't compatibility wonderful! */ ! 146: ! 147: /* ! 148: * Structure used in sigaltstack call. ! 149: */ ! 150: struct sigaltstack { ! 151: char *ss_base; /* signal stack base */ ! 152: int ss_len; /* signal stack length */ ! 153: int ss_onstack; /* current status */ ! 154: }; ! 155: ! 156: /* ! 157: * Structure used in sigstack call. ! 158: */ ! 159: struct sigstack { ! 160: char *ss_sp; /* signal stack pointer */ ! 161: int ss_onstack; /* current status */ ! 162: }; ! 163: ! 164: /* ! 165: * Information pushed on stack when a signal is delivered. ! 166: * This is used by the kernel to restore state following ! 167: * execution of the signal handler. It is also made available ! 168: * to the handler to allow it to restore state properly if ! 169: * a non-standard exit is performed. ! 170: */ ! 171: struct sigcontext { ! 172: int sc_onstack; /* sigstack state to restore */ ! 173: int sc_mask; /* signal mask to restore */ ! 174: int sc_sp; /* sp to restore */ ! 175: int sc_fp; /* fp to restore */ ! 176: int sc_ap; /* ap to restore */ ! 177: int sc_pc; /* pc to restore */ ! 178: int sc_ps; /* psl to restore */ ! 179: }; ! 180: ! 181: /* ! 182: * Macro for converting signal number to a mask suitable for ! 183: * sigblock(). ! 184: */ ! 185: #define sigmask(m) (1 << ((m)-1)) ! 186: ! 187: #define BADSIG (void (*)())-1 ! 188: #endif /* _POSIX_SOURCE */ ! 189: ! 190: #define SIG_DFL (void (*)())0 ! 191: #define SIG_IGN (void (*)())1 ! 192: ! 193: #ifndef KERNEL ! 194: #include <sys/types.h> ! 195: ! 196: __BEGIN_DECLS ! 197: void (*signal __P((int, void (*) __P((int))))) __P((int)); ! 198: int raise __P((int)); ! 199: #ifndef _ANSI_SOURCE ! 200: int kill __P((pid_t, int)); ! 201: int sigaction __P((int, const struct sigaction *, struct sigaction *)); ! 202: int sigpending __P((sigset_t *)); ! 203: int sigprocmask __P((int, const sigset_t *, sigset_t *)); ! 204: int sigsuspend __P((const sigset_t *)); ! 205: #endif /* !_ANSI_SOURCE */ ! 206: #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE) ! 207: int killpg __P((pid_t, int)); ! 208: void psignal __P((unsigned, const char *)); ! 209: int sigblock __P((int)); ! 210: int siginterrupt __P((int, int)); ! 211: int sigpause __P((int)); ! 212: int sigreturn __P((struct sigcontext *)); ! 213: int sigsetmask __P((int)); ! 214: int sigstack __P((const struct sigstack *, struct sigstack *)); ! 215: int sigvec __P((int, struct sigvec *, struct sigvec *)); ! 216: #endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */ ! 217: __END_DECLS ! 218: ! 219: #endif /* !KERNEL */ ! 220: #endif /* !_SIGNAL_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.