Annotation of Net2/sys/signalvar.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 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:  *     @(#)signalvar.h 7.1 (Berkeley) 5/9/91
                     34:  */
                     35: 
                     36: #ifndef        _SIGNALVAR_H_           /* tmp for user.h */
                     37: #define        _SIGNALVAR_H_
                     38: 
                     39: /*
                     40:  * Kernel signal definitions and data structures,
                     41:  * not exported to user programs.
                     42:  */
                     43: 
                     44: /*
                     45:  * Process signal actions and state, needed only within the process
                     46:  * (not necessarily resident).
                     47:  */
                     48: struct sigacts {
                     49:        sig_t   ps_sigact[NSIG];        /* disposition of signals */
                     50:        sigset_t ps_catchmask[NSIG];    /* signals to be blocked */
                     51:        sigset_t ps_sigonstack;         /* signals to take on sigstack */
                     52:        sigset_t ps_sigintr;            /* signals that interrupt syscalls */
                     53:        sigset_t ps_oldmask;            /* saved mask from before sigpause */
                     54:        int     ps_flags;               /* signal flags, below */
                     55:        struct  sigstack ps_sigstack;   /* sp & on stack state variable */
                     56:        int     ps_sig;                 /* for core dump/debugger XXX */
                     57:        int     ps_code;                /* for core dump/debugger XXX */
                     58: };
                     59: 
                     60: #define        ps_onstack      ps_sigstack.ss_onstack
                     61: #define        ps_sigsp        ps_sigstack.ss_sp
                     62: 
                     63: /* signal flags */
                     64: #define        SA_OLDMASK      0x01            /* need to restore mask before pause */
                     65: 
                     66: /* additional signal action values, used only temporarily/internally */
                     67: #define        SIG_CATCH       (void (*)())2
                     68: #define        SIG_HOLD        (void (*)())3
                     69: 
                     70: /*
                     71:  * get signal action for process and signal; currently only for current process
                     72:  */
                     73: #define SIGACTION(p, sig)      (p->p_sigacts->ps_sigact[(sig)])
                     74: 
                     75: /*
                     76:  * Determine signal that should be delivered to process p, the current process,
                     77:  * 0 if none.  If there is a pending stop signal with default action,
                     78:  * the process stops in issig().
                     79:  */
                     80: #define        CURSIG(p) \
                     81:        (((p)->p_sig == 0 || \
                     82:            ((p)->p_flag&STRC) == 0 && ((p)->p_sig &~ (p)->p_sigmask) == 0) ? \
                     83:            0 : issig(p))
                     84: 
                     85: /*
                     86:  * Clear a pending signal from a process.
                     87:  */
                     88: #define        CLRSIG(p, sig)  { (p)->p_sig &= ~sigmask(sig); }
                     89: 
                     90: /*
                     91:  * Signal properties and actions.
                     92:  * The array below categorizes the signals and their default actions
                     93:  * according to the following properties:
                     94:  */
                     95: #define        SA_KILL         0x01            /* terminates process by default */
                     96: #define        SA_CORE         0x02            /* ditto and coredumps */
                     97: #define        SA_STOP         0x04            /* suspend process */
                     98: #define        SA_TTYSTOP      (0x08|SA_STOP)  /* ditto, from tty */
                     99: #define        SA_IGNORE       0x10            /* ignore by default */
                    100: #define        SA_CONT         0x20            /* continue if suspended */
                    101: #define        SA_CANTMASK     0x40            /* non-maskable, catchable */
                    102: 
                    103: #ifdef SIGPROP
                    104: int sigprop[NSIG + 1] = {
                    105:        0,                      /* unused */
                    106:        SA_KILL,                /* SIGHUP */
                    107:        SA_KILL,                /* SIGINT */
                    108:        SA_KILL|SA_CORE,        /* SIGQUIT */
                    109:        SA_KILL|SA_CORE,        /* SIGILL */
                    110:        SA_KILL|SA_CORE,        /* SIGTRAP */
                    111:        SA_KILL|SA_CORE,        /* SIGABRT */
                    112:        SA_KILL|SA_CORE,        /* SIGEMT */
                    113:        SA_KILL|SA_CORE,        /* SIGFPE */
                    114:        SA_KILL,                /* SIGKILL */
                    115:        SA_KILL|SA_CORE,        /* SIGBUS */
                    116:        SA_KILL|SA_CORE,        /* SIGSEGV */
                    117:        SA_KILL|SA_CORE,        /* SIGSYS */
                    118:        SA_KILL,                /* SIGPIPE */
                    119:        SA_KILL,                /* SIGALRM */
                    120:        SA_KILL,                /* SIGTERM */
                    121:        SA_IGNORE,              /* SIGURG */
                    122:        SA_STOP,                /* SIGSTOP */
                    123:        SA_TTYSTOP,             /* SIGTSTP */
                    124:        SA_IGNORE|SA_CONT,      /* SIGCONT */
                    125:        SA_IGNORE,              /* SIGCHLD */
                    126:        SA_TTYSTOP,             /* SIGTTIN */
                    127:        SA_TTYSTOP,             /* SIGTTOU */
                    128:        SA_IGNORE,              /* SIGIO */
                    129:        SA_KILL,                /* SIGXCPU */
                    130:        SA_KILL,                /* SIGXFSZ */
                    131:        SA_KILL,                /* SIGVTALRM */
                    132:        SA_KILL,                /* SIGPROF */
                    133:        SA_IGNORE,              /* SIGWINCH  */
                    134:        SA_IGNORE,              /* SIGINFO */
                    135:        SA_KILL,                /* SIGUSR1 */
                    136:        SA_KILL,                /* SIGUSR2 */
                    137: };
                    138: 
                    139: #define        stopsigmask     (sigmask(SIGSTOP)|sigmask(SIGTSTP)|\
                    140:                         sigmask(SIGTTIN)|sigmask(SIGTTOU))
                    141: #define        contsigmask     (sigmask(SIGCONT))
                    142: 
                    143: #endif /* SIGPROP */
                    144: 
                    145: #define        sigcantmask     (sigmask(SIGKILL)|sigmask(SIGSTOP))
                    146: 
                    147: #ifdef KERNEL
                    148: /*
                    149:  * Machine-independent functions:
                    150:  */
                    151: void   siginit __P((struct proc *p));
                    152: void   execsigs __P((struct proc *p));
                    153: void   gsignal __P((int pgid, int sig));
                    154: void   pgsignal __P((struct pgrp *pgrp, int sig, int checkctty));
                    155: void   trapsignal __P((struct proc *p, int sig, unsigned code));
                    156: void   psignal __P((struct proc *p, int sig));
                    157: int    issig __P((struct proc *p));
                    158: void   psig __P((int sig));
                    159: int    coredump __P((struct proc *p));
                    160: 
                    161: /*
                    162:  * Machine-dependent functions:
                    163:  */
                    164: void   sendsig __P((sig_t action, int sig, int returnmask, unsigned code));
                    165: #endif /* KERNEL */
                    166: #endif /* !_SIGNALVAR_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.