1/* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6#ifndef _UAPI_ASM_GENERIC_SIGINFO_H 7#define _UAPI_ASM_GENERIC_SIGINFO_H 8#include <linux/compiler.h> 9#include <linux/types.h> 10typedef union sigval { 11 int sival_int; 12 void __user *sival_ptr; 13} sigval_t; 14#ifndef __ARCH_SI_PREAMBLE_SIZE 15#define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int)) 16#endif 17#define SI_MAX_SIZE 128 18#ifndef SI_PAD_SIZE 19#define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_SI_PREAMBLE_SIZE) / sizeof(int)) 20#endif 21#ifndef __ARCH_SI_BAND_T 22#define __ARCH_SI_BAND_T long 23#endif 24#ifndef __ARCH_SI_CLOCK_T 25#define __ARCH_SI_CLOCK_T __kernel_clock_t 26#endif 27#ifndef __ARCH_SI_ATTRIBUTES 28#define __ARCH_SI_ATTRIBUTES 29#endif 30typedef struct siginfo { 31 int si_signo; 32#ifndef __ARCH_HAS_SWAPPED_SIGINFO 33 int si_errno; 34 int si_code; 35#else 36 int si_code; 37 int si_errno; 38#endif 39 union { 40 int _pad[SI_PAD_SIZE]; 41 42 struct { 43 __kernel_pid_t _pid; 44 __kernel_uid32_t _uid; 45 } _kill; 46 47 struct { 48 __kernel_timer_t _tid; 49 int _overrun; 50 sigval_t _sigval; 51 int _sys_private; 52 } _timer; 53 54 struct { 55 __kernel_pid_t _pid; 56 __kernel_uid32_t _uid; 57 sigval_t _sigval; 58 } _rt; 59 60 struct { 61 __kernel_pid_t _pid; 62 __kernel_uid32_t _uid; 63 int _status; 64 __ARCH_SI_CLOCK_T _utime; 65 __ARCH_SI_CLOCK_T _stime; 66 } _sigchld; 67 68 struct { 69 void __user *_addr; 70#ifdef __ARCH_SI_TRAPNO 71 int _trapno; 72#endif 73#ifdef __ia64__ 74 int _imm; 75 unsigned int _flags; 76 unsigned long _isr; 77#endif 78#define __ADDR_BND_PKEY_PAD (__alignof__(void *) < sizeof(short) ? \ 79 sizeof(short) : __alignof__(void *)) 80 union { 81 82 short _addr_lsb; 83 84 struct { 85 char _dummy_bnd[__ADDR_BND_PKEY_PAD]; 86 void __user *_lower; 87 void __user *_upper; 88 } _addr_bnd; 89 90 struct { 91 char _dummy_pkey[__ADDR_BND_PKEY_PAD]; 92 __u32 _pkey; 93 } _addr_pkey; 94 }; 95 } _sigfault; 96 97 struct { 98 __ARCH_SI_BAND_T _band; 99 int _fd; 100 } _sigpoll; 101 102 struct { 103 void __user *_call_addr; 104 int _syscall; 105 unsigned int _arch; 106 } _sigsys; 107 } _sifields; 108} __ARCH_SI_ATTRIBUTES siginfo_t; 109#define si_pid _sifields._kill._pid 110#define si_uid _sifields._kill._uid 111#define si_tid _sifields._timer._tid 112#define si_overrun _sifields._timer._overrun 113#define si_sys_private _sifields._timer._sys_private 114#define si_status _sifields._sigchld._status 115#define si_utime _sifields._sigchld._utime 116#define si_stime _sifields._sigchld._stime 117#define si_value _sifields._rt._sigval 118#define si_int _sifields._rt._sigval.sival_int 119#define si_ptr _sifields._rt._sigval.sival_ptr 120#define si_addr _sifields._sigfault._addr 121#ifdef __ARCH_SI_TRAPNO 122#define si_trapno _sifields._sigfault._trapno 123#endif 124#define si_addr_lsb _sifields._sigfault._addr_lsb 125#define si_lower _sifields._sigfault._addr_bnd._lower 126#define si_upper _sifields._sigfault._addr_bnd._upper 127#define si_pkey _sifields._sigfault._addr_pkey._pkey 128#define si_band _sifields._sigpoll._band 129#define si_fd _sifields._sigpoll._fd 130#define si_call_addr _sifields._sigsys._call_addr 131#define si_syscall _sifields._sigsys._syscall 132#define si_arch _sifields._sigsys._arch 133#define SI_USER 0 134#define SI_KERNEL 0x80 135#define SI_QUEUE -1 136#define SI_TIMER -2 137#define SI_MESGQ -3 138#define SI_ASYNCIO -4 139#define SI_SIGIO -5 140#define SI_TKILL -6 141#define SI_DETHREAD -7 142#define SI_ASYNCNL -60 143#define SI_FROMUSER(siptr) ((siptr)->si_code <= 0) 144#define SI_FROMKERNEL(siptr) ((siptr)->si_code > 0) 145#define ILL_ILLOPC 1 146#define ILL_ILLOPN 2 147#define ILL_ILLADR 3 148#define ILL_ILLTRP 4 149#define ILL_PRVOPC 5 150#define ILL_PRVREG 6 151#define ILL_COPROC 7 152#define ILL_BADSTK 8 153#define ILL_BADIADDR 9 154#define __ILL_BREAK 10 155#define __ILL_BNDMOD 11 156#define NSIGILL 11 157#define FPE_INTDIV 1 158#define FPE_INTOVF 2 159#define FPE_FLTDIV 3 160#define FPE_FLTOVF 4 161#define FPE_FLTUND 5 162#define FPE_FLTRES 6 163#define FPE_FLTINV 7 164#define FPE_FLTSUB 8 165#define __FPE_DECOVF 9 166#define __FPE_DECDIV 10 167#define __FPE_DECERR 11 168#define __FPE_INVASC 12 169#define __FPE_INVDEC 13 170#define FPE_FLTUNK 14 171#define FPE_CONDTRAP 15 172#define NSIGFPE 15 173#define SEGV_MAPERR 1 174#define SEGV_ACCERR 2 175#define SEGV_BNDERR 3 176#ifdef __ia64__ 177# define __SEGV_PSTKOVF 4 178#else 179# define SEGV_PKUERR 4 180#endif 181#define SEGV_ACCADI 5 182#define SEGV_ADIDERR 6 183#define SEGV_ADIPERR 7 184#define NSIGSEGV 7 185#define BUS_ADRALN 1 186#define BUS_ADRERR 2 187#define BUS_OBJERR 3 188#define BUS_MCEERR_AR 4 189#define BUS_MCEERR_AO 5 190#define NSIGBUS 5 191#define TRAP_BRKPT 1 192#define TRAP_TRACE 2 193#define TRAP_BRANCH 3 194#define TRAP_HWBKPT 4 195#define TRAP_UNK 5 196#define NSIGTRAP 5 197#define CLD_EXITED 1 198#define CLD_KILLED 2 199#define CLD_DUMPED 3 200#define CLD_TRAPPED 4 201#define CLD_STOPPED 5 202#define CLD_CONTINUED 6 203#define NSIGCHLD 6 204#define POLL_IN 1 205#define POLL_OUT 2 206#define POLL_MSG 3 207#define POLL_ERR 4 208#define POLL_PRI 5 209#define POLL_HUP 6 210#define NSIGPOLL 6 211#define SYS_SECCOMP 1 212#define NSIGSYS 1 213#define SIGEV_SIGNAL 0 214#define SIGEV_NONE 1 215#define SIGEV_THREAD 2 216#define SIGEV_THREAD_ID 4 217#ifndef __ARCH_SIGEV_PREAMBLE_SIZE 218#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(int) * 2 + sizeof(sigval_t)) 219#endif 220#define SIGEV_MAX_SIZE 64 221#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE - __ARCH_SIGEV_PREAMBLE_SIZE) \ 222 / sizeof(int)) 223typedef struct sigevent { 224 sigval_t sigev_value; 225 int sigev_signo; 226 int sigev_notify; 227 union { 228 int _pad[SIGEV_PAD_SIZE]; 229 int _tid; 230 struct { 231 void (*_function)(sigval_t); 232 void *_attribute; 233 } _sigev_thread; 234 } _sigev_un; 235} sigevent_t; 236#define sigev_notify_function _sigev_un._sigev_thread._function 237#define sigev_notify_attributes _sigev_un._sigev_thread._attribute 238#define sigev_notify_thread_id _sigev_un._tid 239#endif 240