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> 10 typedef 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 30 typedef 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)) 223 typedef 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