siginfo.h revision 12e1f28cce28271eb109a5bae818a804f0c3bb27
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 * Careful to keep union _sifields from shifting ... 20198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 21e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if _MIPS_SZLONG == 32 22198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) 23e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#elif _MIPS_SZLONG == 64 24198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) 25e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#else 26e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#error _MIPS_SZLONG neither 32 nor 64 27198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif 28198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 29e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define __ARCH_SIGSYS 30e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 3112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris#include <uapi/asm-generic/siginfo.h> 32198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 3312e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* We can't use generic siginfo_t, because our si_code and si_errno are swapped */ 34198084289b68143fd4ea72dec91515eec00d700fChristopher Ferristypedef struct siginfo { 35198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_signo; 36198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_code; 37198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_errno; 38198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3]; 39198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 40198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris union { 41198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _pad[SI_PAD_SIZE]; 42198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 43198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* kill() */ 44198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 45198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* sender's pid */ 46198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 47198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _kill; 48198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 49198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* POSIX.1b timers */ 50198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 51198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris timer_t _tid; /* timer id */ 52198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _overrun; /* overrun count */ 53198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; 54198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris sigval_t _sigval; /* same as below */ 55198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _sys_private; /* not to be passed to user */ 56198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _timer; 57198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 58198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* POSIX.1b signals */ 59198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 60198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* sender's pid */ 61198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 62198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris sigval_t _sigval; 63198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _rt; 64198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 65198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGCHLD */ 66198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 67198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* which child */ 68198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 69198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _status; /* exit code */ 70198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _utime; 71198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _stime; 72198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigchld; 73198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 74198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* IRIX SIGCHLD */ 75198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 76198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* which child */ 77198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _utime; 78198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _status; /* exit code */ 79198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _stime; 80198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _irix_sigchld; 81198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 82198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ 83198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 84198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris void __user *_addr; /* faulting insn/memory ref. */ 85198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifdef __ARCH_SI_TRAPNO 86198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _trapno; /* TRAP # which caused the signal */ 87198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif 88198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris short _addr_lsb; 8912e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris struct { 9012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris void __user *_lower; 9112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris void __user *_upper; 9212e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris } _addr_bnd; 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; 100e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 101e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris /* SIGSYS */ 102e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris struct { 103e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris void __user *_call_addr; /* calling user insn */ 104e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris int _syscall; /* triggering system call number */ 105e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris unsigned int _arch; /* AUDIT_ARCH_* of syscall */ 106e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris } _sigsys; 107198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sifields; 108198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris} siginfo_t; 109198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 110198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 111198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * si_code values 112198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Again these have been chosen to be IRIX compatible. 113198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 114198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_ASYNCIO 115198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_TIMER 116198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_MESGQ 117198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_ASYNCIO -2 /* sent by AIO completion */ 118198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */ 119198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */ 120198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 12112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris#include <asm-generic/siginfo.h> 122198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 123198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _UAPI_ASM_SIGINFO_H */ 124