1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * This file is subject to the terms and conditions of the GNU General Public 3*53ee8cc1Swenshuai.xi * License. See the file "COPYING" in the main directory of this archive 4*53ee8cc1Swenshuai.xi * for more details. 5*53ee8cc1Swenshuai.xi * 6*53ee8cc1Swenshuai.xi * Copyright (C) 1998, 1999, 2001, 2003 Ralf Baechle 7*53ee8cc1Swenshuai.xi * Copyright (C) 2000, 2001 Silicon Graphics, Inc. 8*53ee8cc1Swenshuai.xi */ 9*53ee8cc1Swenshuai.xi #ifndef _ASM_SIGINFO_H 10*53ee8cc1Swenshuai.xi #define _ASM_SIGINFO_H 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi 13*53ee8cc1Swenshuai.xi #define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int)) 14*53ee8cc1Swenshuai.xi #undef __ARCH_SI_TRAPNO /* exception code needs to fill this ... */ 15*53ee8cc1Swenshuai.xi 16*53ee8cc1Swenshuai.xi #define HAVE_ARCH_SIGINFO_T 17*53ee8cc1Swenshuai.xi 18*53ee8cc1Swenshuai.xi /* 19*53ee8cc1Swenshuai.xi * We duplicate the generic versions - <asm-generic/siginfo.h> is just borked 20*53ee8cc1Swenshuai.xi * by design ... 21*53ee8cc1Swenshuai.xi */ 22*53ee8cc1Swenshuai.xi #define HAVE_ARCH_COPY_SIGINFO 23*53ee8cc1Swenshuai.xi struct siginfo; 24*53ee8cc1Swenshuai.xi 25*53ee8cc1Swenshuai.xi /* 26*53ee8cc1Swenshuai.xi * Careful to keep union _sifields from shifting ... 27*53ee8cc1Swenshuai.xi */ 28*53ee8cc1Swenshuai.xi #ifdef CONFIG_32BIT 29*53ee8cc1Swenshuai.xi #define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) 30*53ee8cc1Swenshuai.xi #endif 31*53ee8cc1Swenshuai.xi #ifdef CONFIG_64BIT 32*53ee8cc1Swenshuai.xi #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) 33*53ee8cc1Swenshuai.xi #endif 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi #include <asm-generic/siginfo.h> 36*53ee8cc1Swenshuai.xi 37*53ee8cc1Swenshuai.xi typedef struct siginfo { 38*53ee8cc1Swenshuai.xi int si_signo; 39*53ee8cc1Swenshuai.xi int si_code; 40*53ee8cc1Swenshuai.xi int si_errno; 41*53ee8cc1Swenshuai.xi int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3]; 42*53ee8cc1Swenshuai.xi 43*53ee8cc1Swenshuai.xi union { 44*53ee8cc1Swenshuai.xi int _pad[SI_PAD_SIZE]; 45*53ee8cc1Swenshuai.xi 46*53ee8cc1Swenshuai.xi /* kill() */ 47*53ee8cc1Swenshuai.xi struct { 48*53ee8cc1Swenshuai.xi pid_t _pid; /* sender's pid */ 49*53ee8cc1Swenshuai.xi __ARCH_SI_UID_T _uid; /* sender's uid */ 50*53ee8cc1Swenshuai.xi } _kill; 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi /* POSIX.1b timers */ 53*53ee8cc1Swenshuai.xi struct { 54*53ee8cc1Swenshuai.xi timer_t _tid; /* timer id */ 55*53ee8cc1Swenshuai.xi int _overrun; /* overrun count */ 56*53ee8cc1Swenshuai.xi char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; 57*53ee8cc1Swenshuai.xi sigval_t _sigval; /* same as below */ 58*53ee8cc1Swenshuai.xi int _sys_private; /* not to be passed to user */ 59*53ee8cc1Swenshuai.xi } _timer; 60*53ee8cc1Swenshuai.xi 61*53ee8cc1Swenshuai.xi /* POSIX.1b signals */ 62*53ee8cc1Swenshuai.xi struct { 63*53ee8cc1Swenshuai.xi pid_t _pid; /* sender's pid */ 64*53ee8cc1Swenshuai.xi __ARCH_SI_UID_T _uid; /* sender's uid */ 65*53ee8cc1Swenshuai.xi sigval_t _sigval; 66*53ee8cc1Swenshuai.xi } _rt; 67*53ee8cc1Swenshuai.xi 68*53ee8cc1Swenshuai.xi /* SIGCHLD */ 69*53ee8cc1Swenshuai.xi struct { 70*53ee8cc1Swenshuai.xi pid_t _pid; /* which child */ 71*53ee8cc1Swenshuai.xi __ARCH_SI_UID_T _uid; /* sender's uid */ 72*53ee8cc1Swenshuai.xi int _status; /* exit code */ 73*53ee8cc1Swenshuai.xi clock_t _utime; 74*53ee8cc1Swenshuai.xi clock_t _stime; 75*53ee8cc1Swenshuai.xi } _sigchld; 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xi /* IRIX SIGCHLD */ 78*53ee8cc1Swenshuai.xi struct { 79*53ee8cc1Swenshuai.xi pid_t _pid; /* which child */ 80*53ee8cc1Swenshuai.xi clock_t _utime; 81*53ee8cc1Swenshuai.xi int _status; /* exit code */ 82*53ee8cc1Swenshuai.xi clock_t _stime; 83*53ee8cc1Swenshuai.xi } _irix_sigchld; 84*53ee8cc1Swenshuai.xi 85*53ee8cc1Swenshuai.xi /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ 86*53ee8cc1Swenshuai.xi struct { 87*53ee8cc1Swenshuai.xi void *_addr; /* faulting insn/memory ref. */ 88*53ee8cc1Swenshuai.xi #ifdef __ARCH_SI_TRAPNO 89*53ee8cc1Swenshuai.xi int _trapno; /* TRAP # which caused the signal */ 90*53ee8cc1Swenshuai.xi #endif 91*53ee8cc1Swenshuai.xi } _sigfault; 92*53ee8cc1Swenshuai.xi 93*53ee8cc1Swenshuai.xi /* SIGPOLL, SIGXFSZ (To do ...) */ 94*53ee8cc1Swenshuai.xi struct { 95*53ee8cc1Swenshuai.xi __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 96*53ee8cc1Swenshuai.xi int _fd; 97*53ee8cc1Swenshuai.xi } _sigpoll; 98*53ee8cc1Swenshuai.xi } _sifields; 99*53ee8cc1Swenshuai.xi } siginfo_t; 100*53ee8cc1Swenshuai.xi 101*53ee8cc1Swenshuai.xi /* 102*53ee8cc1Swenshuai.xi * si_code values 103*53ee8cc1Swenshuai.xi * Again these have been choosen to be IRIX compatible. 104*53ee8cc1Swenshuai.xi */ 105*53ee8cc1Swenshuai.xi #undef SI_ASYNCIO 106*53ee8cc1Swenshuai.xi #undef SI_TIMER 107*53ee8cc1Swenshuai.xi #undef SI_MESGQ 108*53ee8cc1Swenshuai.xi #define SI_ASYNCIO -2 /* sent by AIO completion */ 109*53ee8cc1Swenshuai.xi #define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */ 110*53ee8cc1Swenshuai.xi #define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */ 111*53ee8cc1Swenshuai.xi 112*53ee8cc1Swenshuai.xi 113*53ee8cc1Swenshuai.xi #endif /* _ASM_SIGINFO_H */ 114