#ifndef TARGET_OS_SIGINFO_H #define TARGET_OS_SIGINFO_H #define TARGET_NSIG 32 /* counting 0; could be 33 (mask is 1-32) */ #define TARGET_NSIG_BPW (sizeof(uint32_t) * 8) #define TARGET_NSIG_WORDS (TARGET_NSIG / TARGET_NSIG_BPW) /* this struct defines a stack used during syscall handling */ typedef struct target_sigaltstack { abi_long ss_sp; abi_ulong ss_size; abi_long ss_flags; } target_stack_t; typedef struct { uint32_t __bits[TARGET_NSIG_WORDS]; } target_sigset_t struct target_sigaction { abi_ulong _sa_handler; int32_t sa_flags; target_sigset_t sa_mask; }; /* Compare to sys/siginfo.h */ typedef union target_sigval { int sival_int; abi_ulong sival_ptr; } target_sigval_t; struct target_ksiginfo { int32_t _signo; int32_t _code; int32_t _errno; #if TARGET_ABI_BITS == 64 int32_t _pad; #endif union { struct { int32_t _pid; int32_t _uid; target_sigval_t _value; } _rt; struct { int32_t _pid; int32_t _uid; int32_t _struct; /* clock_t _utime; */ /* clock_t _stime; */ } _child; struct { abi_ulong _addr; int32_t _trap; } _fault; struct { long _band; int _fd; } _poll; } _reason; }; typedef union target_siginfo { int8_t si_pad[128]; struct target_ksiginfo _info; } target_siginfo_t; #define target_si_signo _info._signo #define target_si_code _info._code #define target_si_errno _info._errno #define target_si_addr _info._reason._fault._addr #define TARGET_SEGV_MAPERR 1 #define TARGET_SEGV_ACCERR 2 #define TARGET_TRAP_BRKPT 1 #define TARGET_TRAP_TRACE 2 #endif /* TARGET_OS_SIGINFO_H */