[BACK]Return to signalvar.h CVS log [TXT][DIR] Up to [local] / sys / sys

Annotation of sys/sys/signalvar.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: signalvar.h,v 1.16 2007/02/06 18:42:37 art Exp $      */
                      2: /*     $NetBSD: signalvar.h,v 1.17 1996/04/22 01:23:31 christos Exp $  */
                      3:
                      4: /*
                      5:  * Copyright (c) 1991, 1993
                      6:  *     The Regents of the University of California.  All rights reserved.
                      7:  *
                      8:  * Redistribution and use in source and binary forms, with or without
                      9:  * modification, are permitted provided that the following conditions
                     10:  * are met:
                     11:  * 1. Redistributions of source code must retain the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer.
                     13:  * 2. Redistributions in binary form must reproduce the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer in the
                     15:  *    documentation and/or other materials provided with the distribution.
                     16:  * 3. Neither the name of the University nor the names of its contributors
                     17:  *    may be used to endorse or promote products derived from this software
                     18:  *    without specific prior written permission.
                     19:  *
                     20:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     21:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     22:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     23:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     24:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     25:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     26:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     27:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     28:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     29:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     30:  * SUCH DAMAGE.
                     31:  *
                     32:  *     @(#)signalvar.h 8.3 (Berkeley) 1/4/94
                     33:  */
                     34:
                     35: #ifndef        _SYS_SIGNALVAR_H_               /* tmp for user.h */
                     36: #define        _SYS_SIGNALVAR_H_
                     37:
                     38: /*
                     39:  * Kernel signal definitions and data structures,
                     40:  * not exported to user programs.
                     41:  */
                     42:
                     43: /*
                     44:  * Process signal actions and state, needed only within the process
                     45:  * (not necessarily resident).
                     46:  */
                     47: struct sigacts {
                     48:        sig_t   ps_sigact[NSIG];        /* disposition of signals */
                     49:        sigset_t ps_catchmask[NSIG];    /* signals to be blocked */
                     50:        sigset_t ps_sigonstack;         /* signals to take on sigstack */
                     51:        sigset_t ps_sigintr;            /* signals that interrupt syscalls */
                     52:        sigset_t ps_sigreset;           /* signals that reset when caught */
                     53:        sigset_t ps_siginfo;            /* signals that provide siginfo */
                     54:        sigset_t ps_oldmask;            /* saved mask from before sigpause */
                     55:        int     ps_flags;               /* signal flags, below */
                     56:        struct  sigaltstack ps_sigstk;  /* sp & on stack state variable */
                     57:        int     ps_sig;                 /* for core dump/debugger XXX */
                     58:        long    ps_code;                /* for core dump/debugger XXX */
                     59:        int     ps_type;                /* for core dump/debugger XXX */
                     60:        union sigval ps_sigval;         /* for core dump/debugger XXX */
                     61:        sigset_t ps_usertramp;          /* SunOS compat; libc sigtramp XXX */
                     62:        int     ps_refcnt;              /* reference count */
                     63: };
                     64:
                     65: /* signal flags */
                     66: #define        SAS_OLDMASK     0x01            /* need to restore mask before pause */
                     67: #define        SAS_ALTSTACK    0x02            /* have alternate signal stack */
                     68:
                     69: /* additional signal action values, used only temporarily/internally */
                     70: #define        SIG_CATCH       (void (*)(int))2
                     71: #define        SIG_HOLD        (void (*)(int))3
                     72:
                     73: /*
                     74:  * get signal action for process and signal; currently only for current process
                     75:  */
                     76: #define SIGACTION(p, sig)      (p->p_sigacts->ps_sigact[(sig)])
                     77:
                     78: /*
                     79:  * Determine signal that should be delivered to process p, the current
                     80:  * process, 0 if none.  If there is a pending stop signal with default
                     81:  * action, the process stops in issignal().
                     82:  */
                     83: #define        CURSIG(p)                                                       \
                     84:        (((p)->p_siglist == 0 ||                                        \
                     85:            (((p)->p_flag & P_TRACED) == 0 &&                           \
                     86:            ((p)->p_siglist & ~(p)->p_sigmask) == 0)) ?                 \
                     87:            0 : issignal(p))
                     88:
                     89: /*
                     90:  * Clear a pending signal from a process.
                     91:  */
                     92: #define        CLRSIG(p, sig)  atomic_clearbits_int(&(p)->p_siglist, sigmask(sig))
                     93:
                     94: /*
                     95:  * Signal properties and actions.
                     96:  * The array below categorizes the signals and their default actions
                     97:  * according to the following properties:
                     98:  */
                     99: #define        SA_KILL         0x01            /* terminates process by default */
                    100: #define        SA_CORE         0x02            /* ditto and coredumps */
                    101: #define        SA_STOP         0x04            /* suspend process */
                    102: #define        SA_TTYSTOP      0x08            /* ditto, from tty */
                    103: #define        SA_IGNORE       0x10            /* ignore by default */
                    104: #define        SA_CONT         0x20            /* continue if suspended */
                    105: #define        SA_CANTMASK     0x40            /* non-maskable, catchable */
                    106:
                    107: #ifdef SIGPROP
                    108: int sigprop[NSIG + 1] = {
                    109:        0,                      /* unused */
                    110:        SA_KILL,                /* SIGHUP */
                    111:        SA_KILL,                /* SIGINT */
                    112:        SA_KILL|SA_CORE,        /* SIGQUIT */
                    113:        SA_KILL|SA_CORE,        /* SIGILL */
                    114:        SA_KILL|SA_CORE,        /* SIGTRAP */
                    115:        SA_KILL|SA_CORE,        /* SIGABRT */
                    116:        SA_KILL|SA_CORE,        /* SIGEMT */
                    117:        SA_KILL|SA_CORE,        /* SIGFPE */
                    118:        SA_KILL,                /* SIGKILL */
                    119:        SA_KILL|SA_CORE,        /* SIGBUS */
                    120:        SA_KILL|SA_CORE,        /* SIGSEGV */
                    121:        SA_KILL|SA_CORE,        /* SIGSYS */
                    122:        SA_KILL,                /* SIGPIPE */
                    123:        SA_KILL,                /* SIGALRM */
                    124:        SA_KILL,                /* SIGTERM */
                    125:        SA_IGNORE,              /* SIGURG */
                    126:        SA_STOP,                /* SIGSTOP */
                    127:        SA_STOP|SA_TTYSTOP,     /* SIGTSTP */
                    128:        SA_IGNORE|SA_CONT,      /* SIGCONT */
                    129:        SA_IGNORE,              /* SIGCHLD */
                    130:        SA_STOP|SA_TTYSTOP,     /* SIGTTIN */
                    131:        SA_STOP|SA_TTYSTOP,     /* SIGTTOU */
                    132:        SA_IGNORE,              /* SIGIO */
                    133:        SA_KILL,                /* SIGXCPU */
                    134:        SA_KILL,                /* SIGXFSZ */
                    135:        SA_KILL,                /* SIGVTALRM */
                    136:        SA_KILL,                /* SIGPROF */
                    137:        SA_IGNORE,              /* SIGWINCH  */
                    138:        SA_IGNORE,              /* SIGINFO */
                    139:        SA_KILL,                /* SIGUSR1 */
                    140:        SA_KILL,                /* SIGUSR2 */
                    141: };
                    142:
                    143: #define        contsigmask     (sigmask(SIGCONT))
                    144: #define        stopsigmask     (sigmask(SIGSTOP) | sigmask(SIGTSTP) | \
                    145:                            sigmask(SIGTTIN) | sigmask(SIGTTOU))
                    146:
                    147: #endif /* SIGPROP */
                    148:
                    149: #define        sigcantmask     (sigmask(SIGKILL) | sigmask(SIGSTOP))
                    150:
                    151: #ifdef _KERNEL
                    152: /*
                    153:  * Machine-independent functions:
                    154:  */
                    155: int    coredump(struct proc *p);
                    156: void   execsigs(struct proc *p);
                    157: void   gsignal(int pgid, int sig);
                    158: void   csignal(pid_t pgid, int signum, uid_t uid, uid_t euid);
                    159: int    issignal(struct proc *p);
                    160: void   pgsignal(struct pgrp *pgrp, int sig, int checkctty);
                    161: void   postsig(int sig);
                    162: void   psignal(struct proc *p, int sig);
                    163: void   siginit(struct proc *p);
                    164: void   trapsignal(struct proc *p, int sig, u_long code, int type,
                    165:            union sigval val);
                    166: void   sigexit(struct proc *, int);
                    167: void   setsigvec(struct proc *, int, struct sigaction *);
                    168: int    killpg1(struct proc *, int, int, int);
                    169:
                    170: void   signal_init(void);
                    171:
                    172: struct sigacts *sigactsinit(struct proc *);
                    173: void   sigactsshare(struct proc *, struct proc *);
                    174: void   sigactsunshare(struct proc *);
                    175: void   sigactsfree(struct proc *);
                    176:
                    177: /*
                    178:  * Machine-dependent functions:
                    179:  */
                    180: void   sendsig(sig_t action, int sig, int returnmask, u_long code,
                    181:            int type, union sigval val);
                    182: struct core;
                    183: struct vnode;
                    184: struct ucred;
                    185: int    cpu_coredump(struct proc *, struct vnode *, struct ucred *,
                    186:                          struct core *);
                    187: #endif /* _KERNEL */
                    188: #endif /* !_SYS_SIGNALVAR_H_ */

CVSweb