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

Annotation of sys/sys/siginfo.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: siginfo.h,v 1.9 2005/12/13 00:35:23 millert Exp $     */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 1997 Theo de Raadt
        !             5:  * All rights reserved.
        !             6:  *
        !             7:  * Redistribution and use in source and binary forms, with or without
        !             8:  * modification, are permitted provided that the following conditions
        !             9:  * are met:
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice, this list of conditions and the following disclaimer.
        !            12:  * 2. Redistributions in binary form must reproduce the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer in the
        !            14:  *    documentation and/or other materials provided with the distribution.
        !            15:  *
        !            16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            17:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            18:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            19:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            20:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            21:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            22:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            23:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            24:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            25:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            26:  */
        !            27:
        !            28: #ifndef _SYS_SIGINFO_H
        !            29: #define _SYS_SIGINFO_H
        !            30:
        !            31: #include <sys/cdefs.h>
        !            32:
        !            33: union sigval {
        !            34:        int     sival_int;      /* integer value */
        !            35:        void    *sival_ptr;     /* pointer value */
        !            36: };
        !            37:
        !            38: /*
        !            39:  * Negative signal codes are reserved for future use for
        !            40:  * user generated signals.
        !            41:  */
        !            42: #define SI_FROMUSER(sip)       ((sip)->si_code <= 0)
        !            43: #define SI_FROMKERNEL(sip)     ((sip)->si_code > 0)
        !            44:
        !            45: #define SI_NOINFO      32767   /* no signal information */
        !            46: #define SI_USER                0       /* user generated signal via kill() */
        !            47: #define SI_LWP         (-1)    /* user generated signal via lwp_kill()*/
        !            48: #define SI_QUEUE       (-2)    /* user generated signal via sigqueue()*/
        !            49: #define SI_TIMER       (-3)    /* from timer expiration */
        !            50:
        !            51: #if __POSIX_VISIBLE >= 199309 || __XPG_VISIBLE
        !            52: /*
        !            53:  * The machine dependent signal codes (SIGILL, SIGFPE,
        !            54:  * SIGSEGV, and SIGBUS)
        !            55:  */
        !            56: #define ILL_ILLOPC     1       /* illegal opcode */
        !            57: #define ILL_ILLOPN     2       /* illegal operand */
        !            58: #define ILL_ILLADR     3       /* illegal addressing mode */
        !            59: #define ILL_ILLTRP     4       /* illegal trap */
        !            60: #define ILL_PRVOPC     5       /* privileged opcode */
        !            61: #define ILL_PRVREG     6       /* privileged register */
        !            62: #define ILL_COPROC     7       /* co-processor */
        !            63: #define ILL_BADSTK     8       /* bad stack */
        !            64: #define NSIGILL                8
        !            65:
        !            66: #define EMT_TAGOVF     1       /* tag overflow */
        !            67: #define NSIGEMT                1
        !            68:
        !            69: #define FPE_INTDIV     1       /* integer divide by zero */
        !            70: #define FPE_INTOVF     2       /* integer overflow */
        !            71: #define FPE_FLTDIV     3       /* floating point divide by zero */
        !            72: #define FPE_FLTOVF     4       /* floating point overflow */
        !            73: #define FPE_FLTUND     5       /* floating point underflow */
        !            74: #define FPE_FLTRES     6       /* floating point inexact result */
        !            75: #define FPE_FLTINV     7       /* invalid floating point operation */
        !            76: #define FPE_FLTSUB     8       /* subscript out of range */
        !            77: #define NSIGFPE                8
        !            78:
        !            79: #define SEGV_MAPERR    1       /* address not mapped to object */
        !            80: #define SEGV_ACCERR    2       /* invalid permissions */
        !            81: #define NSIGSEGV       2
        !            82:
        !            83: #define BUS_ADRALN     1       /* invalid address alignment */
        !            84: #define BUS_ADRERR     2       /* non-existent physical address */
        !            85: #define BUS_OBJERR     3       /* object specific hardware error */
        !            86: #define NSIGBUS                3
        !            87:
        !            88: #endif /* __POSIX_VISIBLE >= 199309 || __XPG_VISIBLE */
        !            89:
        !            90: /*
        !            91:  * SIGTRAP signal codes
        !            92:  */
        !            93: #define TRAP_BRKPT     1       /* breakpoint trap */
        !            94: #define TRAP_TRACE     2       /* trace trap */
        !            95: #define NSIGTRAP       2
        !            96:
        !            97: /*
        !            98:  * SIGCLD signal codes
        !            99:  */
        !           100: #define CLD_EXITED     1       /* child has exited */
        !           101: #define CLD_KILLED     2       /* child was killed */
        !           102: #define CLD_DUMPED     3       /* child has coredumped */
        !           103: #define CLD_TRAPPED    4       /* traced child has stopped */
        !           104: #define CLD_STOPPED    5       /* child has stopped on signal */
        !           105: #define CLD_CONTINUED  6       /* stopped child has continued */
        !           106: #define NSIGCLD                6
        !           107:
        !           108: #if 0
        !           109: /*
        !           110:  * SIGPOLL signal codes - not supported
        !           111:  */
        !           112: #define POLL_IN                1       /* input available */
        !           113: #define POLL_OUT       2       /* output possible */
        !           114: #define POLL_MSG       3       /* message available */
        !           115: #define POLL_ERR       4       /* I/O error */
        !           116: #define POLL_PRI       5       /* high priority input available */
        !           117: #define POLL_HUP       6       /* device disconnected */
        !           118: #define NSIGPOLL       6
        !           119:
        !           120: /*
        !           121:  * SIGPROF signal codes - not supported
        !           122:  */
        !           123: #define PROF_SIG       1       /* have to set code non-zero */
        !           124: #define NSIGPROF       1
        !           125: #endif
        !           126:
        !           127: #define SI_MAXSZ       128
        !           128: #define SI_PAD         ((SI_MAXSZ / sizeof (int)) - 3)
        !           129:
        !           130: #include <sys/time.h>
        !           131:
        !           132: typedef struct {
        !           133:        int     si_signo;                       /* signal from signal.h */
        !           134:        int     si_code;                        /* code from above */
        !           135:        int     si_errno;                       /* error from errno.h */
        !           136:        union {
        !           137:                int     _pad[SI_PAD];           /* for future growth */
        !           138:                struct {                        /* kill(), SIGCLD, siqqueue() */
        !           139:                        pid_t   _pid;           /* process ID */
        !           140:                        union {
        !           141:                                struct {
        !           142:                                        uid_t   _uid;
        !           143:                                        union sigval    _value;
        !           144:                                } _kill;
        !           145:                                struct {
        !           146:                                        clock_t _utime;
        !           147:                                        int     _status;
        !           148:                                        clock_t _stime;
        !           149:                                } _cld;
        !           150:                        } _pdata;
        !           151:                } _proc;
        !           152:                struct {        /* SIGSEGV, SIGBUS, SIGILL and SIGFPE */
        !           153:                        caddr_t _addr;          /* faulting address */
        !           154:                        int     _trapno;        /* illegal trap number */
        !           155:                } _fault;
        !           156: #if 0
        !           157:                struct {                        /* SIGPOLL, SIGXFSZ */
        !           158:                        /* fd not currently available for SIGPOLL */
        !           159:                        int     _fd;            /* file descriptor */
        !           160:                        long    _band;
        !           161:                } _file;
        !           162:                struct {                        /* SIGPROF */
        !           163:                        caddr_t _faddr;         /* last fault address */
        !           164:                        timespec _tstamp;       /* real time stamp */
        !           165:                        short   _syscall;       /* current syscall */
        !           166:                        char    _nsysarg;       /* number of arguments */
        !           167:                        char    _fault;         /* last fault type */
        !           168:                        long    _sysarg[8];     /* syscall arguments */
        !           169:                        long    _mstate[17];    /* exactly fills struct*/
        !           170:                } _prof;
        !           171: #endif
        !           172:        } _data;
        !           173: } siginfo_t;
        !           174:
        !           175: #define si_pid         _data._proc._pid
        !           176:
        !           177: #define si_status      _data._proc._pdata._cld._status
        !           178: #define si_stime       _data._proc._pdata._cld._stime
        !           179: #define si_utime       _data._proc._pdata._cld._utime
        !           180: #define si_uid         _data._proc._pdata._kill._uid
        !           181: #define si_value       _data._proc._pdata._kill._value
        !           182: #define si_addr                _data._fault._addr
        !           183: #define si_trapno      _data._fault._trapno
        !           184: #define si_fd          _data._file._fd
        !           185: #define si_band                _data._file._band
        !           186:
        !           187: #define si_tstamp      _data._prof._tstamp
        !           188: #define si_syscall     _data._prof._syscall
        !           189: #define si_nsysarg     _data._prof._nsysarg
        !           190: #define si_sysarg      _data._prof._sysarg
        !           191: #define si_fault       _data._prof._fault
        !           192: #define si_faddr       _data._prof._faddr
        !           193: #define si_mstate      _data._prof._mstate
        !           194:
        !           195: #if defined(_KERNEL)
        !           196: void   initsiginfo(siginfo_t *, int, u_long, int, union sigval);
        !           197: #endif
        !           198:
        !           199: #endif /* _SYS_SIGINFO_H */

CVSweb