sys/signal.h

Go to the documentation of this file.
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&LTOSTOP) */
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_ */

Copyright © Nokia Corporation 2001-2008
Back to top