1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_ASM_GENERIC_SIGINFO_H 3*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_ASM_GENERIC_SIGINFO_H 4*f80ad8b4SAndroid Build Coastguard Worker 5*f80ad8b4SAndroid Build Coastguard Worker #include <linux/compiler.h> 6*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 7*f80ad8b4SAndroid Build Coastguard Worker 8*f80ad8b4SAndroid Build Coastguard Worker typedef union sigval { 9*f80ad8b4SAndroid Build Coastguard Worker int sival_int; 10*f80ad8b4SAndroid Build Coastguard Worker void __user *sival_ptr; 11*f80ad8b4SAndroid Build Coastguard Worker } sigval_t; 12*f80ad8b4SAndroid Build Coastguard Worker 13*f80ad8b4SAndroid Build Coastguard Worker #define SI_MAX_SIZE 128 14*f80ad8b4SAndroid Build Coastguard Worker 15*f80ad8b4SAndroid Build Coastguard Worker /* 16*f80ad8b4SAndroid Build Coastguard Worker * The default "si_band" type is "long", as specified by POSIX. 17*f80ad8b4SAndroid Build Coastguard Worker * However, some architectures want to override this to "int" 18*f80ad8b4SAndroid Build Coastguard Worker * for historical compatibility reasons, so we allow that. 19*f80ad8b4SAndroid Build Coastguard Worker */ 20*f80ad8b4SAndroid Build Coastguard Worker #ifndef __ARCH_SI_BAND_T 21*f80ad8b4SAndroid Build Coastguard Worker #define __ARCH_SI_BAND_T long 22*f80ad8b4SAndroid Build Coastguard Worker #endif 23*f80ad8b4SAndroid Build Coastguard Worker 24*f80ad8b4SAndroid Build Coastguard Worker #ifndef __ARCH_SI_CLOCK_T 25*f80ad8b4SAndroid Build Coastguard Worker #define __ARCH_SI_CLOCK_T __kernel_clock_t 26*f80ad8b4SAndroid Build Coastguard Worker #endif 27*f80ad8b4SAndroid Build Coastguard Worker 28*f80ad8b4SAndroid Build Coastguard Worker #ifndef __ARCH_SI_ATTRIBUTES 29*f80ad8b4SAndroid Build Coastguard Worker #define __ARCH_SI_ATTRIBUTES 30*f80ad8b4SAndroid Build Coastguard Worker #endif 31*f80ad8b4SAndroid Build Coastguard Worker 32*f80ad8b4SAndroid Build Coastguard Worker /* 33*f80ad8b4SAndroid Build Coastguard Worker * Be careful when extending this union. On 32bit siginfo_t is 32bit 34*f80ad8b4SAndroid Build Coastguard Worker * aligned. Which means that a 64bit field or any other field that 35*f80ad8b4SAndroid Build Coastguard Worker * would increase the alignment of siginfo_t will break the ABI. 36*f80ad8b4SAndroid Build Coastguard Worker */ 37*f80ad8b4SAndroid Build Coastguard Worker union __sifields { 38*f80ad8b4SAndroid Build Coastguard Worker /* kill() */ 39*f80ad8b4SAndroid Build Coastguard Worker struct { 40*f80ad8b4SAndroid Build Coastguard Worker __kernel_pid_t _pid; /* sender's pid */ 41*f80ad8b4SAndroid Build Coastguard Worker __kernel_uid32_t _uid; /* sender's uid */ 42*f80ad8b4SAndroid Build Coastguard Worker } _kill; 43*f80ad8b4SAndroid Build Coastguard Worker 44*f80ad8b4SAndroid Build Coastguard Worker /* POSIX.1b timers */ 45*f80ad8b4SAndroid Build Coastguard Worker struct { 46*f80ad8b4SAndroid Build Coastguard Worker __kernel_timer_t _tid; /* timer id */ 47*f80ad8b4SAndroid Build Coastguard Worker int _overrun; /* overrun count */ 48*f80ad8b4SAndroid Build Coastguard Worker sigval_t _sigval; /* same as below */ 49*f80ad8b4SAndroid Build Coastguard Worker int _sys_private; /* not to be passed to user */ 50*f80ad8b4SAndroid Build Coastguard Worker } _timer; 51*f80ad8b4SAndroid Build Coastguard Worker 52*f80ad8b4SAndroid Build Coastguard Worker /* POSIX.1b signals */ 53*f80ad8b4SAndroid Build Coastguard Worker struct { 54*f80ad8b4SAndroid Build Coastguard Worker __kernel_pid_t _pid; /* sender's pid */ 55*f80ad8b4SAndroid Build Coastguard Worker __kernel_uid32_t _uid; /* sender's uid */ 56*f80ad8b4SAndroid Build Coastguard Worker sigval_t _sigval; 57*f80ad8b4SAndroid Build Coastguard Worker } _rt; 58*f80ad8b4SAndroid Build Coastguard Worker 59*f80ad8b4SAndroid Build Coastguard Worker /* SIGCHLD */ 60*f80ad8b4SAndroid Build Coastguard Worker struct { 61*f80ad8b4SAndroid Build Coastguard Worker __kernel_pid_t _pid; /* which child */ 62*f80ad8b4SAndroid Build Coastguard Worker __kernel_uid32_t _uid; /* sender's uid */ 63*f80ad8b4SAndroid Build Coastguard Worker int _status; /* exit code */ 64*f80ad8b4SAndroid Build Coastguard Worker __ARCH_SI_CLOCK_T _utime; 65*f80ad8b4SAndroid Build Coastguard Worker __ARCH_SI_CLOCK_T _stime; 66*f80ad8b4SAndroid Build Coastguard Worker } _sigchld; 67*f80ad8b4SAndroid Build Coastguard Worker 68*f80ad8b4SAndroid Build Coastguard Worker /* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGTRAP, SIGEMT */ 69*f80ad8b4SAndroid Build Coastguard Worker struct { 70*f80ad8b4SAndroid Build Coastguard Worker void __user *_addr; /* faulting insn/memory ref. */ 71*f80ad8b4SAndroid Build Coastguard Worker 72*f80ad8b4SAndroid Build Coastguard Worker #define __ADDR_BND_PKEY_PAD (__alignof__(void *) < sizeof(short) ? \ 73*f80ad8b4SAndroid Build Coastguard Worker sizeof(short) : __alignof__(void *)) 74*f80ad8b4SAndroid Build Coastguard Worker union { 75*f80ad8b4SAndroid Build Coastguard Worker /* used on alpha and sparc */ 76*f80ad8b4SAndroid Build Coastguard Worker int _trapno; /* TRAP # which caused the signal */ 77*f80ad8b4SAndroid Build Coastguard Worker /* 78*f80ad8b4SAndroid Build Coastguard Worker * used when si_code=BUS_MCEERR_AR or 79*f80ad8b4SAndroid Build Coastguard Worker * used when si_code=BUS_MCEERR_AO 80*f80ad8b4SAndroid Build Coastguard Worker */ 81*f80ad8b4SAndroid Build Coastguard Worker short _addr_lsb; /* LSB of the reported address */ 82*f80ad8b4SAndroid Build Coastguard Worker /* used when si_code=SEGV_BNDERR */ 83*f80ad8b4SAndroid Build Coastguard Worker struct { 84*f80ad8b4SAndroid Build Coastguard Worker char _dummy_bnd[__ADDR_BND_PKEY_PAD]; 85*f80ad8b4SAndroid Build Coastguard Worker void __user *_lower; 86*f80ad8b4SAndroid Build Coastguard Worker void __user *_upper; 87*f80ad8b4SAndroid Build Coastguard Worker } _addr_bnd; 88*f80ad8b4SAndroid Build Coastguard Worker /* used when si_code=SEGV_PKUERR */ 89*f80ad8b4SAndroid Build Coastguard Worker struct { 90*f80ad8b4SAndroid Build Coastguard Worker char _dummy_pkey[__ADDR_BND_PKEY_PAD]; 91*f80ad8b4SAndroid Build Coastguard Worker __u32 _pkey; 92*f80ad8b4SAndroid Build Coastguard Worker } _addr_pkey; 93*f80ad8b4SAndroid Build Coastguard Worker /* used when si_code=TRAP_PERF */ 94*f80ad8b4SAndroid Build Coastguard Worker struct { 95*f80ad8b4SAndroid Build Coastguard Worker unsigned long _data; 96*f80ad8b4SAndroid Build Coastguard Worker __u32 _type; 97*f80ad8b4SAndroid Build Coastguard Worker __u32 _flags; 98*f80ad8b4SAndroid Build Coastguard Worker } _perf; 99*f80ad8b4SAndroid Build Coastguard Worker }; 100*f80ad8b4SAndroid Build Coastguard Worker } _sigfault; 101*f80ad8b4SAndroid Build Coastguard Worker 102*f80ad8b4SAndroid Build Coastguard Worker /* SIGPOLL */ 103*f80ad8b4SAndroid Build Coastguard Worker struct { 104*f80ad8b4SAndroid Build Coastguard Worker __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 105*f80ad8b4SAndroid Build Coastguard Worker int _fd; 106*f80ad8b4SAndroid Build Coastguard Worker } _sigpoll; 107*f80ad8b4SAndroid Build Coastguard Worker 108*f80ad8b4SAndroid Build Coastguard Worker /* SIGSYS */ 109*f80ad8b4SAndroid Build Coastguard Worker struct { 110*f80ad8b4SAndroid Build Coastguard Worker void __user *_call_addr; /* calling user insn */ 111*f80ad8b4SAndroid Build Coastguard Worker int _syscall; /* triggering system call number */ 112*f80ad8b4SAndroid Build Coastguard Worker unsigned int _arch; /* AUDIT_ARCH_* of syscall */ 113*f80ad8b4SAndroid Build Coastguard Worker } _sigsys; 114*f80ad8b4SAndroid Build Coastguard Worker }; 115*f80ad8b4SAndroid Build Coastguard Worker 116*f80ad8b4SAndroid Build Coastguard Worker #ifndef __ARCH_HAS_SWAPPED_SIGINFO 117*f80ad8b4SAndroid Build Coastguard Worker #define __SIGINFO \ 118*f80ad8b4SAndroid Build Coastguard Worker struct { \ 119*f80ad8b4SAndroid Build Coastguard Worker int si_signo; \ 120*f80ad8b4SAndroid Build Coastguard Worker int si_errno; \ 121*f80ad8b4SAndroid Build Coastguard Worker int si_code; \ 122*f80ad8b4SAndroid Build Coastguard Worker union __sifields _sifields; \ 123*f80ad8b4SAndroid Build Coastguard Worker } 124*f80ad8b4SAndroid Build Coastguard Worker #else 125*f80ad8b4SAndroid Build Coastguard Worker #define __SIGINFO \ 126*f80ad8b4SAndroid Build Coastguard Worker struct { \ 127*f80ad8b4SAndroid Build Coastguard Worker int si_signo; \ 128*f80ad8b4SAndroid Build Coastguard Worker int si_code; \ 129*f80ad8b4SAndroid Build Coastguard Worker int si_errno; \ 130*f80ad8b4SAndroid Build Coastguard Worker union __sifields _sifields; \ 131*f80ad8b4SAndroid Build Coastguard Worker } 132*f80ad8b4SAndroid Build Coastguard Worker #endif /* __ARCH_HAS_SWAPPED_SIGINFO */ 133*f80ad8b4SAndroid Build Coastguard Worker 134*f80ad8b4SAndroid Build Coastguard Worker typedef struct siginfo { 135*f80ad8b4SAndroid Build Coastguard Worker union { 136*f80ad8b4SAndroid Build Coastguard Worker __SIGINFO; 137*f80ad8b4SAndroid Build Coastguard Worker int _si_pad[SI_MAX_SIZE/sizeof(int)]; 138*f80ad8b4SAndroid Build Coastguard Worker }; 139*f80ad8b4SAndroid Build Coastguard Worker } __ARCH_SI_ATTRIBUTES siginfo_t; 140*f80ad8b4SAndroid Build Coastguard Worker 141*f80ad8b4SAndroid Build Coastguard Worker /* 142*f80ad8b4SAndroid Build Coastguard Worker * How these fields are to be accessed. 143*f80ad8b4SAndroid Build Coastguard Worker */ 144*f80ad8b4SAndroid Build Coastguard Worker #define si_pid _sifields._kill._pid 145*f80ad8b4SAndroid Build Coastguard Worker #define si_uid _sifields._kill._uid 146*f80ad8b4SAndroid Build Coastguard Worker #define si_tid _sifields._timer._tid 147*f80ad8b4SAndroid Build Coastguard Worker #define si_overrun _sifields._timer._overrun 148*f80ad8b4SAndroid Build Coastguard Worker #define si_sys_private _sifields._timer._sys_private 149*f80ad8b4SAndroid Build Coastguard Worker #define si_status _sifields._sigchld._status 150*f80ad8b4SAndroid Build Coastguard Worker #define si_utime _sifields._sigchld._utime 151*f80ad8b4SAndroid Build Coastguard Worker #define si_stime _sifields._sigchld._stime 152*f80ad8b4SAndroid Build Coastguard Worker #define si_value _sifields._rt._sigval 153*f80ad8b4SAndroid Build Coastguard Worker #define si_int _sifields._rt._sigval.sival_int 154*f80ad8b4SAndroid Build Coastguard Worker #define si_ptr _sifields._rt._sigval.sival_ptr 155*f80ad8b4SAndroid Build Coastguard Worker #define si_addr _sifields._sigfault._addr 156*f80ad8b4SAndroid Build Coastguard Worker #define si_trapno _sifields._sigfault._trapno 157*f80ad8b4SAndroid Build Coastguard Worker #define si_addr_lsb _sifields._sigfault._addr_lsb 158*f80ad8b4SAndroid Build Coastguard Worker #define si_lower _sifields._sigfault._addr_bnd._lower 159*f80ad8b4SAndroid Build Coastguard Worker #define si_upper _sifields._sigfault._addr_bnd._upper 160*f80ad8b4SAndroid Build Coastguard Worker #define si_pkey _sifields._sigfault._addr_pkey._pkey 161*f80ad8b4SAndroid Build Coastguard Worker #define si_perf_data _sifields._sigfault._perf._data 162*f80ad8b4SAndroid Build Coastguard Worker #define si_perf_type _sifields._sigfault._perf._type 163*f80ad8b4SAndroid Build Coastguard Worker #define si_perf_flags _sifields._sigfault._perf._flags 164*f80ad8b4SAndroid Build Coastguard Worker #define si_band _sifields._sigpoll._band 165*f80ad8b4SAndroid Build Coastguard Worker #define si_fd _sifields._sigpoll._fd 166*f80ad8b4SAndroid Build Coastguard Worker #define si_call_addr _sifields._sigsys._call_addr 167*f80ad8b4SAndroid Build Coastguard Worker #define si_syscall _sifields._sigsys._syscall 168*f80ad8b4SAndroid Build Coastguard Worker #define si_arch _sifields._sigsys._arch 169*f80ad8b4SAndroid Build Coastguard Worker 170*f80ad8b4SAndroid Build Coastguard Worker /* 171*f80ad8b4SAndroid Build Coastguard Worker * si_code values 172*f80ad8b4SAndroid Build Coastguard Worker * Digital reserves positive values for kernel-generated signals. 173*f80ad8b4SAndroid Build Coastguard Worker */ 174*f80ad8b4SAndroid Build Coastguard Worker #define SI_USER 0 /* sent by kill, sigsend, raise */ 175*f80ad8b4SAndroid Build Coastguard Worker #define SI_KERNEL 0x80 /* sent by the kernel from somewhere */ 176*f80ad8b4SAndroid Build Coastguard Worker #define SI_QUEUE -1 /* sent by sigqueue */ 177*f80ad8b4SAndroid Build Coastguard Worker #define SI_TIMER -2 /* sent by timer expiration */ 178*f80ad8b4SAndroid Build Coastguard Worker #define SI_MESGQ -3 /* sent by real time mesq state change */ 179*f80ad8b4SAndroid Build Coastguard Worker #define SI_ASYNCIO -4 /* sent by AIO completion */ 180*f80ad8b4SAndroid Build Coastguard Worker #define SI_SIGIO -5 /* sent by queued SIGIO */ 181*f80ad8b4SAndroid Build Coastguard Worker #define SI_TKILL -6 /* sent by tkill system call */ 182*f80ad8b4SAndroid Build Coastguard Worker #define SI_DETHREAD -7 /* sent by execve() killing subsidiary threads */ 183*f80ad8b4SAndroid Build Coastguard Worker #define SI_ASYNCNL -60 /* sent by glibc async name lookup completion */ 184*f80ad8b4SAndroid Build Coastguard Worker 185*f80ad8b4SAndroid Build Coastguard Worker #define SI_FROMUSER(siptr) ((siptr)->si_code <= 0) 186*f80ad8b4SAndroid Build Coastguard Worker #define SI_FROMKERNEL(siptr) ((siptr)->si_code > 0) 187*f80ad8b4SAndroid Build Coastguard Worker 188*f80ad8b4SAndroid Build Coastguard Worker /* 189*f80ad8b4SAndroid Build Coastguard Worker * SIGILL si_codes 190*f80ad8b4SAndroid Build Coastguard Worker */ 191*f80ad8b4SAndroid Build Coastguard Worker #define ILL_ILLOPC 1 /* illegal opcode */ 192*f80ad8b4SAndroid Build Coastguard Worker #define ILL_ILLOPN 2 /* illegal operand */ 193*f80ad8b4SAndroid Build Coastguard Worker #define ILL_ILLADR 3 /* illegal addressing mode */ 194*f80ad8b4SAndroid Build Coastguard Worker #define ILL_ILLTRP 4 /* illegal trap */ 195*f80ad8b4SAndroid Build Coastguard Worker #define ILL_PRVOPC 5 /* privileged opcode */ 196*f80ad8b4SAndroid Build Coastguard Worker #define ILL_PRVREG 6 /* privileged register */ 197*f80ad8b4SAndroid Build Coastguard Worker #define ILL_COPROC 7 /* coprocessor error */ 198*f80ad8b4SAndroid Build Coastguard Worker #define ILL_BADSTK 8 /* internal stack error */ 199*f80ad8b4SAndroid Build Coastguard Worker #define ILL_BADIADDR 9 /* unimplemented instruction address */ 200*f80ad8b4SAndroid Build Coastguard Worker #define __ILL_BREAK 10 /* illegal break */ 201*f80ad8b4SAndroid Build Coastguard Worker #define __ILL_BNDMOD 11 /* bundle-update (modification) in progress */ 202*f80ad8b4SAndroid Build Coastguard Worker #define NSIGILL 11 203*f80ad8b4SAndroid Build Coastguard Worker 204*f80ad8b4SAndroid Build Coastguard Worker /* 205*f80ad8b4SAndroid Build Coastguard Worker * SIGFPE si_codes 206*f80ad8b4SAndroid Build Coastguard Worker */ 207*f80ad8b4SAndroid Build Coastguard Worker #define FPE_INTDIV 1 /* integer divide by zero */ 208*f80ad8b4SAndroid Build Coastguard Worker #define FPE_INTOVF 2 /* integer overflow */ 209*f80ad8b4SAndroid Build Coastguard Worker #define FPE_FLTDIV 3 /* floating point divide by zero */ 210*f80ad8b4SAndroid Build Coastguard Worker #define FPE_FLTOVF 4 /* floating point overflow */ 211*f80ad8b4SAndroid Build Coastguard Worker #define FPE_FLTUND 5 /* floating point underflow */ 212*f80ad8b4SAndroid Build Coastguard Worker #define FPE_FLTRES 6 /* floating point inexact result */ 213*f80ad8b4SAndroid Build Coastguard Worker #define FPE_FLTINV 7 /* floating point invalid operation */ 214*f80ad8b4SAndroid Build Coastguard Worker #define FPE_FLTSUB 8 /* subscript out of range */ 215*f80ad8b4SAndroid Build Coastguard Worker #define __FPE_DECOVF 9 /* decimal overflow */ 216*f80ad8b4SAndroid Build Coastguard Worker #define __FPE_DECDIV 10 /* decimal division by zero */ 217*f80ad8b4SAndroid Build Coastguard Worker #define __FPE_DECERR 11 /* packed decimal error */ 218*f80ad8b4SAndroid Build Coastguard Worker #define __FPE_INVASC 12 /* invalid ASCII digit */ 219*f80ad8b4SAndroid Build Coastguard Worker #define __FPE_INVDEC 13 /* invalid decimal digit */ 220*f80ad8b4SAndroid Build Coastguard Worker #define FPE_FLTUNK 14 /* undiagnosed floating-point exception */ 221*f80ad8b4SAndroid Build Coastguard Worker #define FPE_CONDTRAP 15 /* trap on condition */ 222*f80ad8b4SAndroid Build Coastguard Worker #define NSIGFPE 15 223*f80ad8b4SAndroid Build Coastguard Worker 224*f80ad8b4SAndroid Build Coastguard Worker /* 225*f80ad8b4SAndroid Build Coastguard Worker * SIGSEGV si_codes 226*f80ad8b4SAndroid Build Coastguard Worker */ 227*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_MAPERR 1 /* address not mapped to object */ 228*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_ACCERR 2 /* invalid permissions for mapped object */ 229*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_BNDERR 3 /* failed address bound checks */ 230*f80ad8b4SAndroid Build Coastguard Worker #ifdef __ia64__ 231*f80ad8b4SAndroid Build Coastguard Worker # define __SEGV_PSTKOVF 4 /* paragraph stack overflow */ 232*f80ad8b4SAndroid Build Coastguard Worker #else 233*f80ad8b4SAndroid Build Coastguard Worker # define SEGV_PKUERR 4 /* failed protection key checks */ 234*f80ad8b4SAndroid Build Coastguard Worker #endif 235*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_ACCADI 5 /* ADI not enabled for mapped object */ 236*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_ADIDERR 6 /* Disrupting MCD error */ 237*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_ADIPERR 7 /* Precise MCD exception */ 238*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */ 239*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_MTESERR 9 /* Synchronous ARM MTE exception */ 240*f80ad8b4SAndroid Build Coastguard Worker #define SEGV_CPERR 10 /* Control protection fault */ 241*f80ad8b4SAndroid Build Coastguard Worker #define NSIGSEGV 10 242*f80ad8b4SAndroid Build Coastguard Worker 243*f80ad8b4SAndroid Build Coastguard Worker /* 244*f80ad8b4SAndroid Build Coastguard Worker * SIGBUS si_codes 245*f80ad8b4SAndroid Build Coastguard Worker */ 246*f80ad8b4SAndroid Build Coastguard Worker #define BUS_ADRALN 1 /* invalid address alignment */ 247*f80ad8b4SAndroid Build Coastguard Worker #define BUS_ADRERR 2 /* non-existent physical address */ 248*f80ad8b4SAndroid Build Coastguard Worker #define BUS_OBJERR 3 /* object specific hardware error */ 249*f80ad8b4SAndroid Build Coastguard Worker /* hardware memory error consumed on a machine check: action required */ 250*f80ad8b4SAndroid Build Coastguard Worker #define BUS_MCEERR_AR 4 251*f80ad8b4SAndroid Build Coastguard Worker /* hardware memory error detected in process but not consumed: action optional*/ 252*f80ad8b4SAndroid Build Coastguard Worker #define BUS_MCEERR_AO 5 253*f80ad8b4SAndroid Build Coastguard Worker #define NSIGBUS 5 254*f80ad8b4SAndroid Build Coastguard Worker 255*f80ad8b4SAndroid Build Coastguard Worker /* 256*f80ad8b4SAndroid Build Coastguard Worker * SIGTRAP si_codes 257*f80ad8b4SAndroid Build Coastguard Worker */ 258*f80ad8b4SAndroid Build Coastguard Worker #define TRAP_BRKPT 1 /* process breakpoint */ 259*f80ad8b4SAndroid Build Coastguard Worker #define TRAP_TRACE 2 /* process trace trap */ 260*f80ad8b4SAndroid Build Coastguard Worker #define TRAP_BRANCH 3 /* process taken branch trap */ 261*f80ad8b4SAndroid Build Coastguard Worker #define TRAP_HWBKPT 4 /* hardware breakpoint/watchpoint */ 262*f80ad8b4SAndroid Build Coastguard Worker #define TRAP_UNK 5 /* undiagnosed trap */ 263*f80ad8b4SAndroid Build Coastguard Worker #define TRAP_PERF 6 /* perf event with sigtrap=1 */ 264*f80ad8b4SAndroid Build Coastguard Worker #define NSIGTRAP 6 265*f80ad8b4SAndroid Build Coastguard Worker 266*f80ad8b4SAndroid Build Coastguard Worker /* 267*f80ad8b4SAndroid Build Coastguard Worker * There is an additional set of SIGTRAP si_codes used by ptrace 268*f80ad8b4SAndroid Build Coastguard Worker * that are of the form: ((PTRACE_EVENT_XXX << 8) | SIGTRAP) 269*f80ad8b4SAndroid Build Coastguard Worker */ 270*f80ad8b4SAndroid Build Coastguard Worker 271*f80ad8b4SAndroid Build Coastguard Worker /* 272*f80ad8b4SAndroid Build Coastguard Worker * Flags for si_perf_flags if SIGTRAP si_code is TRAP_PERF. 273*f80ad8b4SAndroid Build Coastguard Worker */ 274*f80ad8b4SAndroid Build Coastguard Worker #define TRAP_PERF_FLAG_ASYNC (1u << 0) 275*f80ad8b4SAndroid Build Coastguard Worker 276*f80ad8b4SAndroid Build Coastguard Worker /* 277*f80ad8b4SAndroid Build Coastguard Worker * SIGCHLD si_codes 278*f80ad8b4SAndroid Build Coastguard Worker */ 279*f80ad8b4SAndroid Build Coastguard Worker #define CLD_EXITED 1 /* child has exited */ 280*f80ad8b4SAndroid Build Coastguard Worker #define CLD_KILLED 2 /* child was killed */ 281*f80ad8b4SAndroid Build Coastguard Worker #define CLD_DUMPED 3 /* child terminated abnormally */ 282*f80ad8b4SAndroid Build Coastguard Worker #define CLD_TRAPPED 4 /* traced child has trapped */ 283*f80ad8b4SAndroid Build Coastguard Worker #define CLD_STOPPED 5 /* child has stopped */ 284*f80ad8b4SAndroid Build Coastguard Worker #define CLD_CONTINUED 6 /* stopped child has continued */ 285*f80ad8b4SAndroid Build Coastguard Worker #define NSIGCHLD 6 286*f80ad8b4SAndroid Build Coastguard Worker 287*f80ad8b4SAndroid Build Coastguard Worker /* 288*f80ad8b4SAndroid Build Coastguard Worker * SIGPOLL (or any other signal without signal specific si_codes) si_codes 289*f80ad8b4SAndroid Build Coastguard Worker */ 290*f80ad8b4SAndroid Build Coastguard Worker #define POLL_IN 1 /* data input available */ 291*f80ad8b4SAndroid Build Coastguard Worker #define POLL_OUT 2 /* output buffers available */ 292*f80ad8b4SAndroid Build Coastguard Worker #define POLL_MSG 3 /* input message available */ 293*f80ad8b4SAndroid Build Coastguard Worker #define POLL_ERR 4 /* i/o error */ 294*f80ad8b4SAndroid Build Coastguard Worker #define POLL_PRI 5 /* high priority input available */ 295*f80ad8b4SAndroid Build Coastguard Worker #define POLL_HUP 6 /* device disconnected */ 296*f80ad8b4SAndroid Build Coastguard Worker #define NSIGPOLL 6 297*f80ad8b4SAndroid Build Coastguard Worker 298*f80ad8b4SAndroid Build Coastguard Worker /* 299*f80ad8b4SAndroid Build Coastguard Worker * SIGSYS si_codes 300*f80ad8b4SAndroid Build Coastguard Worker */ 301*f80ad8b4SAndroid Build Coastguard Worker #define SYS_SECCOMP 1 /* seccomp triggered */ 302*f80ad8b4SAndroid Build Coastguard Worker #define SYS_USER_DISPATCH 2 /* syscall user dispatch triggered */ 303*f80ad8b4SAndroid Build Coastguard Worker #define NSIGSYS 2 304*f80ad8b4SAndroid Build Coastguard Worker 305*f80ad8b4SAndroid Build Coastguard Worker /* 306*f80ad8b4SAndroid Build Coastguard Worker * SIGEMT si_codes 307*f80ad8b4SAndroid Build Coastguard Worker */ 308*f80ad8b4SAndroid Build Coastguard Worker #define EMT_TAGOVF 1 /* tag overflow */ 309*f80ad8b4SAndroid Build Coastguard Worker #define NSIGEMT 1 310*f80ad8b4SAndroid Build Coastguard Worker 311*f80ad8b4SAndroid Build Coastguard Worker /* 312*f80ad8b4SAndroid Build Coastguard Worker * sigevent definitions 313*f80ad8b4SAndroid Build Coastguard Worker * 314*f80ad8b4SAndroid Build Coastguard Worker * It seems likely that SIGEV_THREAD will have to be handled from 315*f80ad8b4SAndroid Build Coastguard Worker * userspace, libpthread transmuting it to SIGEV_SIGNAL, which the 316*f80ad8b4SAndroid Build Coastguard Worker * thread manager then catches and does the appropriate nonsense. 317*f80ad8b4SAndroid Build Coastguard Worker * However, everything is written out here so as to not get lost. 318*f80ad8b4SAndroid Build Coastguard Worker */ 319*f80ad8b4SAndroid Build Coastguard Worker #define SIGEV_SIGNAL 0 /* notify via signal */ 320*f80ad8b4SAndroid Build Coastguard Worker #define SIGEV_NONE 1 /* other notification: meaningless */ 321*f80ad8b4SAndroid Build Coastguard Worker #define SIGEV_THREAD 2 /* deliver via thread creation */ 322*f80ad8b4SAndroid Build Coastguard Worker #define SIGEV_THREAD_ID 4 /* deliver to thread */ 323*f80ad8b4SAndroid Build Coastguard Worker 324*f80ad8b4SAndroid Build Coastguard Worker /* 325*f80ad8b4SAndroid Build Coastguard Worker * This works because the alignment is ok on all current architectures 326*f80ad8b4SAndroid Build Coastguard Worker * but we leave open this being overridden in the future 327*f80ad8b4SAndroid Build Coastguard Worker */ 328*f80ad8b4SAndroid Build Coastguard Worker #ifndef __ARCH_SIGEV_PREAMBLE_SIZE 329*f80ad8b4SAndroid Build Coastguard Worker #define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(int) * 2 + sizeof(sigval_t)) 330*f80ad8b4SAndroid Build Coastguard Worker #endif 331*f80ad8b4SAndroid Build Coastguard Worker 332*f80ad8b4SAndroid Build Coastguard Worker #define SIGEV_MAX_SIZE 64 333*f80ad8b4SAndroid Build Coastguard Worker #define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE - __ARCH_SIGEV_PREAMBLE_SIZE) \ 334*f80ad8b4SAndroid Build Coastguard Worker / sizeof(int)) 335*f80ad8b4SAndroid Build Coastguard Worker 336*f80ad8b4SAndroid Build Coastguard Worker typedef struct sigevent { 337*f80ad8b4SAndroid Build Coastguard Worker sigval_t sigev_value; 338*f80ad8b4SAndroid Build Coastguard Worker int sigev_signo; 339*f80ad8b4SAndroid Build Coastguard Worker int sigev_notify; 340*f80ad8b4SAndroid Build Coastguard Worker union { 341*f80ad8b4SAndroid Build Coastguard Worker int _pad[SIGEV_PAD_SIZE]; 342*f80ad8b4SAndroid Build Coastguard Worker int _tid; 343*f80ad8b4SAndroid Build Coastguard Worker 344*f80ad8b4SAndroid Build Coastguard Worker struct { 345*f80ad8b4SAndroid Build Coastguard Worker void (*_function)(sigval_t); 346*f80ad8b4SAndroid Build Coastguard Worker void *_attribute; /* really pthread_attr_t */ 347*f80ad8b4SAndroid Build Coastguard Worker } _sigev_thread; 348*f80ad8b4SAndroid Build Coastguard Worker } _sigev_un; 349*f80ad8b4SAndroid Build Coastguard Worker } sigevent_t; 350*f80ad8b4SAndroid Build Coastguard Worker 351*f80ad8b4SAndroid Build Coastguard Worker #define sigev_notify_function _sigev_un._sigev_thread._function 352*f80ad8b4SAndroid Build Coastguard Worker #define sigev_notify_attributes _sigev_un._sigev_thread._attribute 353*f80ad8b4SAndroid Build Coastguard Worker #define sigev_notify_thread_id _sigev_un._tid 354*f80ad8b4SAndroid Build Coastguard Worker 355*f80ad8b4SAndroid Build Coastguard Worker 356*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_ASM_GENERIC_SIGINFO_H */ 357