The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/sys/signal.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1982, 1986, 1989, 1991, 1993
    3  *      The Regents of the University of California.  All rights reserved.
    4  * (c) UNIX System Laboratories, Inc.
    5  * All or some portions of this file are derived from material licensed
    6  * to the University of California by American Telephone and Telegraph
    7  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
    8  * the permission of UNIX System Laboratories, Inc.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. All advertising materials mentioning features or use of this software
   19  *    must display the following acknowledgement:
   20  *      This product includes software developed by the University of
   21  *      California, Berkeley and its contributors.
   22  * 4. Neither the name of the University nor the names of its contributors
   23  *    may be used to endorse or promote products derived from this software
   24  *    without specific prior written permission.
   25  *
   26  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   27  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   29  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   30  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   31  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   32  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   35  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   36  * SUCH DAMAGE.
   37  *
   38  *      @(#)signal.h    8.4 (Berkeley) 5/4/95
   39  * $FreeBSD$
   40  */
   41 
   42 #ifndef _SYS_SIGNAL_H_
   43 #define _SYS_SIGNAL_H_
   44 
   45 #include <sys/cdefs.h>
   46 #include <sys/_posix.h>
   47 #include <machine/signal.h>     /* sig_atomic_t; trap codes; sigcontext */
   48 
   49 #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
   50 #define NSIG    32              /* counting 0; could be 33 (mask is 1-32) */
   51 #endif
   52 
   53 #define SIGHUP  1       /* hangup */
   54 #define SIGINT  2       /* interrupt */
   55 #define SIGQUIT 3       /* quit */
   56 #define SIGILL  4       /* illegal instruction (not reset when caught) */
   57 #ifndef _POSIX_SOURCE
   58 #define SIGTRAP 5       /* trace trap (not reset when caught) */
   59 #endif
   60 #define SIGABRT 6       /* abort() */
   61 #ifndef _POSIX_SOURCE
   62 #define SIGIOT  SIGABRT /* compatibility */
   63 #define SIGEMT  7       /* EMT instruction */
   64 #endif
   65 #define SIGFPE  8       /* floating point exception */
   66 #define SIGKILL 9       /* kill (cannot be caught or ignored) */
   67 #ifndef _POSIX_SOURCE
   68 #define SIGBUS  10      /* bus error */
   69 #endif
   70 #define SIGSEGV 11      /* segmentation violation */
   71 #ifndef _POSIX_SOURCE
   72 #define SIGSYS  12      /* non-existent system call invoked */
   73 #endif
   74 #define SIGPIPE 13      /* write on a pipe with no one to read it */
   75 #define SIGALRM 14      /* alarm clock */
   76 #define SIGTERM 15      /* software termination signal from kill */
   77 #ifndef _POSIX_SOURCE
   78 #define SIGURG  16      /* urgent condition on IO channel */
   79 #endif
   80 #define SIGSTOP 17      /* sendable stop signal not from tty */
   81 #define SIGTSTP 18      /* stop signal from tty */
   82 #define SIGCONT 19      /* continue a stopped process */
   83 #define SIGCHLD 20      /* to parent on child stop or exit */
   84 #define SIGTTIN 21      /* to readers pgrp upon background tty read */
   85 #define SIGTTOU 22      /* like TTIN for output if (tp->t_local&LTOSTOP) */
   86 #ifndef _POSIX_SOURCE
   87 #define SIGIO   23      /* input/output possible signal */
   88 #define SIGXCPU 24      /* exceeded CPU time limit */
   89 #define SIGXFSZ 25      /* exceeded file size limit */
   90 #define SIGVTALRM 26    /* virtual time alarm */
   91 #define SIGPROF 27      /* profiling time alarm */
   92 #define SIGWINCH 28     /* window size changes */
   93 #define SIGINFO 29      /* information request */
   94 #endif
   95 #define SIGUSR1 30      /* user defined signal 1 */
   96 #define SIGUSR2 31      /* user defined signal 2 */
   97 
   98 /*-
   99  * Type of a signal handling function.
  100  *
  101  * Language spec sez signal handlers take exactly one arg, even though we
  102  * actually supply three.  Ugh!
  103  *
  104  * We don't try to hide the difference by leaving out the args because
  105  * that would cause warnings about conformant programs.  Nonconformant
  106  * programs can avoid the warnings by casting to (__sighandler_t *) or
  107  * sig_t before calling signal() or assigning to sa_handler or sv_handler.
  108  *
  109  * The kernel should reverse the cast before calling the function.  It
  110  * has no way to do this, but on most machines 1-arg and 3-arg functions
  111  * have the same calling protocol so there is no problem in practice.
  112  * A bit in sa_flags could be used to specify the number of args.
  113  */
  114 typedef void __sighandler_t __P((int));
  115 
  116 #define SIG_DFL         ((__sighandler_t *)0)
  117 #define SIG_IGN         ((__sighandler_t *)1)
  118 #define SIG_ERR         ((__sighandler_t *)-1)
  119 
  120 #ifndef _ANSI_SOURCE
  121 typedef unsigned int sigset_t;
  122 
  123 /*
  124  * Signal vector "template" used in sigaction call.
  125  */
  126 struct  sigaction {
  127         __sighandler_t *sa_handler;     /* signal handler */
  128         sigset_t sa_mask;               /* signal mask to apply */
  129         int     sa_flags;               /* see signal options below */
  130 };
  131 #ifndef _POSIX_SOURCE
  132 #define SA_ONSTACK      0x0001  /* take signal on signal stack */
  133 #define SA_RESTART      0x0002  /* restart system call on signal return */
  134 #define SA_RESETHAND    0x0004  /* reset to SIG_DFL when taking signal */
  135 #define SA_NODEFER      0x0010  /* don't mask the signal we're delivering */
  136 #define SA_NOCLDWAIT    0x0020  /* don't keep zombies around */
  137 #ifdef COMPAT_SUNOS
  138 #define SA_USERTRAMP    0x0100  /* do not bounce off kernel's sigtramp */
  139 #endif
  140 #endif  /* _POSIX_SOURCE */
  141 #define SA_NOCLDSTOP    0x0008  /* do not generate SIGCHLD on child stop */
  142 
  143 /*
  144  * Flags for sigprocmask:
  145  */
  146 #define SIG_BLOCK       1       /* block specified signal set */
  147 #define SIG_UNBLOCK     2       /* unblock specified signal set */
  148 #define SIG_SETMASK     3       /* set specified signal set */
  149 
  150 #ifndef _POSIX_SOURCE
  151 typedef __sighandler_t  *sig_t; /* type of pointer to a signal function */
  152 
  153 #ifdef  _BSD_SIZE_T_
  154 typedef _BSD_SIZE_T_    size_t;
  155 #undef  _BSD_SIZE_T_
  156 #endif
  157 
  158 /*
  159  * Structure used in sigaltstack call.
  160  */
  161 struct  sigaltstack {
  162         char    *ss_sp;                 /* signal stack base */
  163         size_t  ss_size;                /* signal stack length */
  164         int     ss_flags;               /* SS_DISABLE and/or SS_ONSTACK */
  165 };
  166 #define SS_ONSTACK      0x0001  /* take signal on alternate stack */
  167 #define SS_DISABLE      0x0004  /* disable taking signals on alternate stack */
  168 #define MINSIGSTKSZ     8192                    /* minimum allowable stack */
  169 #define SIGSTKSZ        (MINSIGSTKSZ + 32768)   /* recommended stack size */
  170 
  171 /*
  172  * 4.3 compatibility:
  173  * Signal vector "template" used in sigvec call.
  174  */
  175 struct  sigvec {
  176         __sighandler_t *sv_handler;     /* signal handler */
  177         int     sv_mask;                /* signal mask to apply */
  178         int     sv_flags;               /* see signal options below */
  179 };
  180 
  181 #define SV_ONSTACK      SA_ONSTACK
  182 #define SV_INTERRUPT    SA_RESTART      /* same bit, opposite sense */
  183 #define SV_RESETHAND    SA_RESETHAND
  184 #define SV_NODEFER      SA_NODEFER
  185 #define SV_NOCLDSTOP    SA_NOCLDSTOP
  186 #define sv_onstack sv_flags     /* isn't compatibility wonderful! */
  187 
  188 /*
  189  * Structure used in sigstack call.
  190  */
  191 struct  sigstack {
  192         char    *ss_sp;                 /* signal stack pointer */
  193         int     ss_onstack;             /* current status */
  194 };
  195 
  196 /*
  197  * Macro for converting signal number to a mask suitable for
  198  * sigblock().
  199  */
  200 #define sigmask(m)      (1 << ((m)-1))
  201 
  202 #define BADSIG          SIG_ERR
  203 
  204 #endif  /* !_POSIX_SOURCE */
  205 #endif  /* !_ANSI_SOURCE */
  206 
  207 #ifdef _P1003_1B_VISIBLE_HISTORICALLY
  208 
  209 /* sys/aio.h unconditionally defined these */
  210 
  211 union sigval {
  212         int     sival_int;              /* Integer signal value */
  213         void    *sival_ptr;             /* Pointer signal value */
  214 };
  215 
  216 typedef struct siginfo {
  217         int     si_signo;               /* Signal number */
  218         int     si_code;                /* Cause of the signal */
  219         union sigval si_value;          /* Signal value */
  220 } siginfo_t;
  221 
  222 struct sigevent {
  223         int     sigev_notify;           /* Notification type */
  224         int     sigev_signo;            /* Signal number */
  225         union sigval sigev_value;       /* Signal value */
  226 };
  227 
  228 #define SIGEV_NONE      0               /* No async notification */
  229 #define SIGEV_SIGNAL    1               /* Generate a queued signal */
  230 
  231 #endif
  232 
  233 /*
  234  * For historical reasons; programs expect signal's return value to be
  235  * defined by <sys/signal.h>.
  236  */
  237 __BEGIN_DECLS
  238 __sighandler_t *signal __P((int, __sighandler_t *));
  239 __END_DECLS
  240 
  241 #endif  /* !_SYS_SIGNAL_H_ */

Cache object: 6d626c3e100ab4b5bf51ee07400e41fd


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.