00001 /*- 00002 * Copyright (c) 1982, 1986, 1989, 1991, 1993 00003 * The Regents of the University of California. All rights reserved. 00004 * (c) UNIX System Laboratories, Inc. 00005 * All or some portions of this file are derived from material licensed 00006 * to the University of California by American Telephone and Telegraph 00007 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 00008 * the permission of UNIX System Laboratories, Inc. 00009 * 00010 * Redistribution and use in source and binary forms, with or without 00011 * modification, are permitted provided that the following conditions 00012 * are met: 00013 * 1. Redistributions of source code must retain the above copyright 00014 * notice, this list of conditions and the following disclaimer. 00015 * 2. Redistributions in binary form must reproduce the above copyright 00016 * notice, this list of conditions and the following disclaimer in the 00017 * documentation and/or other materials provided with the distribution. 00018 * 4. Neither the name of the University nor the names of its contributors 00019 * may be used to endorse or promote products derived from this software 00020 * without specific prior written permission. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 00023 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00024 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00025 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 00026 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00027 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 00028 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00029 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00030 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00031 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00032 * SUCH DAMAGE. 00033 * 00034 * @(#)signal.h 8.4 (Berkeley) 5/4/95 00035 * $FreeBSD: src/sys/sys/signal.h,v 1.45 2004/06/11 11:43:46 phk Exp $ 00036 */ 00037 00038 #ifndef _SYS_SIGNAL_H_ 00039 #define _SYS_SIGNAL_H_ 00040 00041 #include <sys/cdefs.h> 00042 #include <sys/_types.h> 00043 #include <sys/_sigset.h> 00044 00045 #include <machine/signal.h> /* sig_atomic_t; trap codes; sigcontext */ 00046 00047 /* 00048 * System defined signals. 00049 */ 00050 #define SIGHUP 1 /* hangup */ 00051 #define SIGINT 2 /* interrupt */ 00052 #define SIGQUIT 3 /* quit */ 00053 #define SIGILL 4 /* illegal instr. (not reset when caught) */ 00054 #define SIGTRAP 5 /* trace trap (not reset when caught) */ 00055 #define SIGABRT 6 /* abort() */ 00056 #define SIGIOT SIGABRT /* compatibility */ 00057 #define SIGEMT 7 /* EMT instruction */ 00058 #define SIGFPE 8 /* floating point exception */ 00059 #define SIGKILL 9 /* kill (cannot be caught or ignored) */ 00060 #define SIGBUS 10 /* bus error */ 00061 #define SIGSEGV 11 /* segmentation violation */ 00062 #define SIGSYS 12 /* non-existent system call invoked */ 00063 #define SIGPIPE 13 /* write on a pipe with no one to read it */ 00064 #define SIGALRM 14 /* alarm clock */ 00065 #define SIGTERM 15 /* software termination signal from kill */ 00066 #define SIGURG 16 /* urgent condition on IO channel */ 00067 #define SIGSTOP 17 /* sendable stop signal not from tty */ 00068 #define SIGTSTP 18 /* stop signal from tty */ 00069 #define SIGCONT 19 /* continue a stopped process */ 00070 #define SIGCHLD 20 /* to parent on child stop or exit */ 00071 #define SIGTTIN 21 /* to readers pgrp upon background tty read */ 00072 #define SIGTTOU 22 /* like TTIN if (tp->t_local<OSTOP) */ 00073 #define SIGIO 23 /* input/output possible signal */ 00074 #define SIGXCPU 24 /* exceeded CPU time limit */ 00075 #define SIGXFSZ 25 /* exceeded file size limit */ 00076 #define SIGVTALRM 26 /* virtual time alarm */ 00077 #define SIGPROF 27 /* profiling time alarm */ 00078 #define SIGWINCH 28 /* window size changes */ 00079 #define SIGINFO 29 /* information request */ 00080 #define SIGUSR1 30 /* user defined signal 1 */ 00081 #define SIGUSR2 31 /* user defined signal 2 */ 00082 #define SIGTHR 32 /* Thread interrupt. */ 00083 00084 /* 00085 * XXX missing SIGRTMIN, SIGRTMAX. 00086 */ 00087 00088 #define SIG_DFL ((__sighandler_t *)0) 00089 #define SIG_IGN ((__sighandler_t *)1) 00090 #define SIG_ERR ((__sighandler_t *)-1) 00091 /* 00092 * XXX missing SIG_HOLD. 00093 */ 00094 00095 /*- 00096 * Type of a signal handling function. 00097 * 00098 * Language spec sez signal handlers take exactly one arg, even though we 00099 * actually supply three. Ugh! 00100 * 00101 * We don't try to hide the difference by leaving out the args because 00102 * that would cause warnings about conformant programs. Nonconformant 00103 * programs can avoid the warnings by casting to (__sighandler_t *) or 00104 * sig_t before calling signal() or assigning to sa_handler or sv_handler. 00105 * 00106 * The kernel should reverse the cast before calling the function. It 00107 * has no way to do this, but on most machines 1-arg and 3-arg functions 00108 * have the same calling protocol so there is no problem in practice. 00109 * A bit in sa_flags could be used to specify the number of args. 00110 */ 00111 typedef void __sighandler_t(int); 00112 00113 #if __POSIX_VISIBLE || __XSI_VISIBLE 00114 #ifndef _SIGSET_T_DECLARED 00115 #define _SIGSET_T_DECLARED 00116 typedef __sigset_t sigset_t; 00117 #endif 00118 #endif 00119 00120 00121 #if __POSIX_VISIBLE || __XSI_VISIBLE 00122 struct __siginfo; 00123 00124 /* 00125 * Signal vector "template" used in sigaction call. 00126 */ 00127 struct sigaction { 00128 union { 00129 void (*__sa_handler)(int); 00130 void (*__sa_sigaction)(int, struct __siginfo *, void *); 00131 } __sigaction_u; /* signal handler */ 00132 int sa_flags; /* see signal options below */ 00133 sigset_t sa_mask; /* signal mask to apply */ 00134 }; 00135 00136 #define sa_handler __sigaction_u.__sa_handler 00137 #endif 00138 00139 #if __POSIX_VISIBLE || __XSI_VISIBLE 00140 #define SA_NOCLDSTOP 0x0008 /* do not generate SIGCHLD on child stop */ 00141 #endif /* __POSIX_VISIBLE || __XSI_VISIBLE */ 00142 00143 #if __XSI_VISIBLE 00144 #define SA_ONSTACK 0x0001 /* take signal on signal stack */ 00145 #define SA_RESTART 0x0002 /* restart system call on signal return */ 00146 #define SA_RESETHAND 0x0004 /* reset to SIG_DFL when taking signal */ 00147 #define SA_NODEFER 0x0010 /* don't mask the signal we're delivering */ 00148 #define SA_NOCLDWAIT 0x0020 /* don't keep zombies around */ 00149 #define SA_SIGINFO 0x0040 /* signal handler with SA_SIGINFO args */ 00150 #endif 00151 00152 #if __BSD_VISIBLE 00153 #define NSIG 32 /* number of old signals (counting 0) */ 00154 #endif 00155 00156 #endif /* !_SYS_SIGNAL_H_ */