siginfo.h revision e084501669a4e4931c9d648351ecd7d595b81b79
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 */ 28e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#if _MIPS_SZLONG == 32 29198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) 30e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#elif _MIPS_SZLONG == 64 31198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) 32e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#else 33e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#error _MIPS_SZLONG neither 32 nor 64 34198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif 35198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 36e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define __ARCH_SIGSYS 37e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 38198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#include <asm-generic/siginfo.h> 39198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 40198084289b68143fd4ea72dec91515eec00d700fChristopher Ferristypedef struct siginfo { 41198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_signo; 42198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_code; 43198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int si_errno; 44198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3]; 45198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 46198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris union { 47198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _pad[SI_PAD_SIZE]; 48198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 49198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* kill() */ 50198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 51198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* sender's pid */ 52198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 53198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _kill; 54198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 55198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* POSIX.1b timers */ 56198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 57198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris timer_t _tid; /* timer id */ 58198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _overrun; /* overrun count */ 59198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; 60198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris sigval_t _sigval; /* same as below */ 61198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _sys_private; /* not to be passed to user */ 62198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _timer; 63198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 64198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* POSIX.1b signals */ 65198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 66198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* sender's pid */ 67198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 68198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris sigval_t _sigval; 69198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _rt; 70198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 71198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGCHLD */ 72198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 73198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* which child */ 74198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_UID_T _uid; /* sender's uid */ 75198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _status; /* exit code */ 76198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _utime; 77198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _stime; 78198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigchld; 79198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 80198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* IRIX SIGCHLD */ 81198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 82198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris pid_t _pid; /* which child */ 83198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _utime; 84198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _status; /* exit code */ 85198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris clock_t _stime; 86198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _irix_sigchld; 87198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 88198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ 89198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 90198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris void __user *_addr; /* faulting insn/memory ref. */ 91198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#ifdef __ARCH_SI_TRAPNO 92198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _trapno; /* TRAP # which caused the signal */ 93198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif 94198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris short _addr_lsb; 95198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigfault; 96198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 97198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris /* SIGPOLL, SIGXFSZ (To do ...) */ 98198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris struct { 99198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 100198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris int _fd; 101198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sigpoll; 102e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 103e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris /* SIGSYS */ 104e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris struct { 105e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris void __user *_call_addr; /* calling user insn */ 106e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris int _syscall; /* triggering system call number */ 107e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris unsigned int _arch; /* AUDIT_ARCH_* of syscall */ 108e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris } _sigsys; 109198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris } _sifields; 110198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris} siginfo_t; 111198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 112198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris/* 113198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * si_code values 114198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris * Again these have been chosen to be IRIX compatible. 115198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris */ 116198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_ASYNCIO 117198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_TIMER 118198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#undef SI_MESGQ 119198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_ASYNCIO -2 /* sent by AIO completion */ 120198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */ 121198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */ 122198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 123198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris 124198084289b68143fd4ea72dec91515eec00d700fChristopher Ferris#endif /* _UAPI_ASM_SIGINFO_H */ 125