siginfo.h revision 198084289b68143fd4ea72dec91515eec00d700f
1198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 2198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * This file is subject to the terms and conditions of the GNU General Public 3198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * License. See the file "COPYING" in the main directory of this archive 4198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * for more details. 5198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * 6198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Copyright (C) 1998, 1999, 2001, 2003 Ralf Baechle 7198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Copyright (C) 2000, 2001 Silicon Graphics, Inc. 8198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 9198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifndef _UAPI_ASM_SIGINFO_H 10198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define _UAPI_ASM_SIGINFO_H 11198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 12198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 13198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int)) 14198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef __ARCH_SI_TRAPNO /* exception code needs to fill this ... */ 15198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 16198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define HAVE_ARCH_SIGINFO_T 17198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 18198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 19198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * We duplicate the generic versions - <asm-generic/siginfo.h> is just borked 20198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * by design ... 21198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 22198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define HAVE_ARCH_COPY_SIGINFO 23198084289b68143fd4ea72dec91515eec00d700fChristopher Ferrisstruct siginfo; 24198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 25198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 26198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Careful to keep union _sifields from shifting ... 27198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 28198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#if _MIPS_SZLONG == 32 29198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) 30198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#elif _MIPS_SZLONG == 64 31198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) 32198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#else 33198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#error _MIPS_SZLONG neither 32 nor 64 34198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif 35198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 36198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#include <asm-generic/siginfo.h> 37198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 38198084289b68143fd4ea72dec91515eec00d700fChristopher Ferristypedef struct siginfo { 39198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_signo; 40198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_code; 41198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_errno; 42198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3]; 43198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 44198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris union { 45198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _pad[SI_PAD_SIZE]; 46198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 47198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* kill() */ 48198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 49198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* sender's pid */ 50198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 51198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _kill; 52198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 53198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* POSIX.1b timers */ 54198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 55198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris timer_t _tid; /* timer id */ 56198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _overrun; /* overrun count */ 57198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; 58198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris sigval_t _sigval; /* same as below */ 59198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _sys_private; /* not to be passed to user */ 60198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _timer; 61198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 62198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* POSIX.1b signals */ 63198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 64198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* sender's pid */ 65198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 66198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris sigval_t _sigval; 67198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _rt; 68198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 69198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGCHLD */ 70198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 71198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* which child */ 72198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 73198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _status; /* exit code */ 74198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _utime; 75198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _stime; 76198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigchld; 77198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 78198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* IRIX SIGCHLD */ 79198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 80198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* which child */ 81198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _utime; 82198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _status; /* exit code */ 83198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _stime; 84198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _irix_sigchld; 85198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 86198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ 87198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 88198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris void __user *_addr; /* faulting insn/memory ref. */ 89198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifdef __ARCH_SI_TRAPNO 90198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _trapno; /* TRAP # which caused the signal */ 91198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif 92198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris short _addr_lsb; 93198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigfault; 94198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 95198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGPOLL, SIGXFSZ (To do ...) */ 96198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 97198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 98198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _fd; 99198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigpoll; 100198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sifields; 101198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris} siginfo_t; 102198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 103198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 104198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * si_code values 105198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Again these have been chosen to be IRIX compatible. 106198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 107198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_ASYNCIO 108198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_TIMER 109198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_MESGQ 110198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_ASYNCIO -2 /* sent by AIO completion */ 111198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */ 112198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */ 113198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 114198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 115198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _UAPI_ASM_SIGINFO_H */ 116