143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells/* 243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * Based on <asm-i386/siginfo.h>. 343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * 443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * Modified 1998-2002 543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co 643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells */ 743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#ifndef _UAPI_ASM_IA64_SIGINFO_H 843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define _UAPI_ASM_IA64_SIGINFO_H 943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 1043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 1143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) 1243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 1343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define HAVE_ARCH_SIGINFO_T 1443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define HAVE_ARCH_COPY_SIGINFO 1543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define HAVE_ARCH_COPY_SIGINFO_TO_USER 1643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 1743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#include <asm-generic/siginfo.h> 1843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 1943e40f25d2c090392fc36cb900b42972e88cc2e2David Howellstypedef struct siginfo { 2043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int si_signo; 2143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int si_errno; 2243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int si_code; 2343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int __pad0; 2443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 2543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells union { 2643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int _pad[SI_PAD_SIZE]; 2743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 2843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells /* kill() */ 2943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells struct { 3043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells pid_t _pid; /* sender's pid */ 3143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells uid_t _uid; /* sender's uid */ 3243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells } _kill; 3343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 3443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells /* POSIX.1b timers */ 3543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells struct { 3643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells timer_t _tid; /* timer id */ 3743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int _overrun; /* overrun count */ 3843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells char _pad[sizeof(__ARCH_SI_UID_T) - sizeof(int)]; 3943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells sigval_t _sigval; /* must overlay ._rt._sigval! */ 4043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int _sys_private; /* not to be passed to user */ 4143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells } _timer; 4243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 4343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells /* POSIX.1b signals */ 4443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells struct { 4543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells pid_t _pid; /* sender's pid */ 4643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells uid_t _uid; /* sender's uid */ 4743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells sigval_t _sigval; 4843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells } _rt; 4943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 5043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells /* SIGCHLD */ 5143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells struct { 5243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells pid_t _pid; /* which child */ 5343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells uid_t _uid; /* sender's uid */ 5443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int _status; /* exit code */ 5543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells clock_t _utime; 5643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells clock_t _stime; 5743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells } _sigchld; 5843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 5943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ 6043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells struct { 6143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells void __user *_addr; /* faulting insn/memory ref. */ 6243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int _imm; /* immediate value for "break" */ 6343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells unsigned int _flags; /* see below */ 6443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells unsigned long _isr; /* isr */ 6543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells short _addr_lsb; /* lsb of faulting address */ 6643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells } _sigfault; 6743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 6843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells /* SIGPOLL */ 6943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells struct { 7043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells long _band; /* POLL_IN, POLL_OUT, POLL_MSG (XPG requires a "long") */ 7143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells int _fd; 7243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells } _sigpoll; 7343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells } _sifields; 7443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells} siginfo_t; 7543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 7643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define si_imm _sifields._sigfault._imm /* as per UNIX SysV ABI spec */ 7743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define si_flags _sifields._sigfault._flags 7843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells/* 7943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * si_isr is valid for SIGILL, SIGFPE, SIGSEGV, SIGBUS, and SIGTRAP provided that 8043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * si_code is non-zero and __ISR_VALID is set in si_flags. 8143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells */ 8243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define si_isr _sifields._sigfault._isr 8343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 8443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells/* 8543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * Flag values for si_flags: 8643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells */ 8743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __ISR_VALID_BIT 0 8843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __ISR_VALID (1 << __ISR_VALID_BIT) 8943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 9043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells/* 9143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * SIGILL si_codes 9243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells */ 9343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define ILL_BADIADDR (__SI_FAULT|9) /* unimplemented instruction address */ 9443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __ILL_BREAK (__SI_FAULT|10) /* illegal break */ 9543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __ILL_BNDMOD (__SI_FAULT|11) /* bundle-update (modification) in progress */ 9643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#undef NSIGILL 9743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define NSIGILL 11 9843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 9943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells/* 10043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * SIGFPE si_codes 10143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells */ 10243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __FPE_DECOVF (__SI_FAULT|9) /* decimal overflow */ 10343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __FPE_DECDIV (__SI_FAULT|10) /* decimal division by zero */ 10443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __FPE_DECERR (__SI_FAULT|11) /* packed decimal error */ 10543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __FPE_INVASC (__SI_FAULT|12) /* invalid ASCII digit */ 10643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __FPE_INVDEC (__SI_FAULT|13) /* invalid decimal digit */ 10743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#undef NSIGFPE 10843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define NSIGFPE 13 10943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 11043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells/* 11143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells * SIGSEGV si_codes 11243e40f25d2c090392fc36cb900b42972e88cc2e2David Howells */ 11343e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define __SEGV_PSTKOVF (__SI_FAULT|3) /* paragraph stack overflow */ 11443e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#undef NSIGSEGV 11543e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define NSIGSEGV 3 11643e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 11743e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#undef NSIGTRAP 11843e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#define NSIGTRAP 4 11943e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 12043e40f25d2c090392fc36cb900b42972e88cc2e2David Howells 12143e40f25d2c090392fc36cb900b42972e88cc2e2David Howells#endif /* _UAPI_ASM_IA64_SIGINFO_H */ 122