19c092804SMarkus Armbruster #ifndef TARGET_OS_SIGINFO_H 29c092804SMarkus Armbruster #define TARGET_OS_SIGINFO_H 3790baaccSWarner Losh 4790baaccSWarner Losh #define TARGET_NSIG 32 /* counting 0; could be 33 (mask is 1-32) */ 5790baaccSWarner Losh #define TARGET_NSIG_BPW (sizeof(uint32_t) * 8) 6790baaccSWarner Losh #define TARGET_NSIG_WORDS (TARGET_NSIG / TARGET_NSIG_BPW) 7790baaccSWarner Losh 8790baaccSWarner Losh /* this struct defines a stack used during syscall handling */ 9790baaccSWarner Losh typedef struct target_sigaltstack { 10790baaccSWarner Losh abi_long ss_sp; 11790baaccSWarner Losh abi_ulong ss_size; 12790baaccSWarner Losh abi_long ss_flags; 13790baaccSWarner Losh } target_stack_t; 14790baaccSWarner Losh 15790baaccSWarner Losh typedef struct { 16790baaccSWarner Losh uint32_t __bits[TARGET_NSIG_WORDS]; 17790baaccSWarner Losh } target_sigset_t 18790baaccSWarner Losh 19790baaccSWarner Losh struct target_sigaction { 20790baaccSWarner Losh abi_ulong _sa_handler; 21790baaccSWarner Losh int32_t sa_flags; 22790baaccSWarner Losh target_sigset_t sa_mask; 23790baaccSWarner Losh }; 24790baaccSWarner Losh 25790baaccSWarner Losh /* Compare to sys/siginfo.h */ 26790baaccSWarner Losh typedef union target_sigval { 27790baaccSWarner Losh int sival_int; 28790baaccSWarner Losh abi_ulong sival_ptr; 29790baaccSWarner Losh } target_sigval_t; 30790baaccSWarner Losh 31790baaccSWarner Losh struct target_ksiginfo { 32790baaccSWarner Losh int32_t _signo; 33790baaccSWarner Losh int32_t _code; 34790baaccSWarner Losh int32_t _errno; 35790baaccSWarner Losh #if TARGET_ABI_BITS == 64 36790baaccSWarner Losh int32_t _pad; 37790baaccSWarner Losh #endif 38790baaccSWarner Losh union { 39790baaccSWarner Losh struct { 40790baaccSWarner Losh int32_t _pid; 41790baaccSWarner Losh int32_t _uid; 42790baaccSWarner Losh target_sigval_t _value; 43790baaccSWarner Losh } _rt; 44790baaccSWarner Losh 45790baaccSWarner Losh struct { 46790baaccSWarner Losh int32_t _pid; 47790baaccSWarner Losh int32_t _uid; 48790baaccSWarner Losh int32_t _struct; 49790baaccSWarner Losh /* clock_t _utime; */ 50790baaccSWarner Losh /* clock_t _stime; */ 51790baaccSWarner Losh } _child; 52790baaccSWarner Losh 53790baaccSWarner Losh struct { 54790baaccSWarner Losh abi_ulong _addr; 55790baaccSWarner Losh int32_t _trap; 56790baaccSWarner Losh } _fault; 57790baaccSWarner Losh 58790baaccSWarner Losh struct { 59790baaccSWarner Losh long _band; 60790baaccSWarner Losh int _fd; 61790baaccSWarner Losh } _poll; 62790baaccSWarner Losh } _reason; 63790baaccSWarner Losh }; 64790baaccSWarner Losh 65790baaccSWarner Losh typedef union target_siginfo { 66790baaccSWarner Losh int8_t si_pad[128]; 67790baaccSWarner Losh struct target_ksiginfo _info; 68790baaccSWarner Losh } target_siginfo_t; 69790baaccSWarner Losh 70790baaccSWarner Losh #define target_si_signo _info._signo 71790baaccSWarner Losh #define target_si_code _info._code 72790baaccSWarner Losh #define target_si_errno _info._errno 73790baaccSWarner Losh #define target_si_addr _info._reason._fault._addr 74790baaccSWarner Losh 75790baaccSWarner Losh #define TARGET_SEGV_MAPERR 1 76790baaccSWarner Losh #define TARGET_SEGV_ACCERR 2 77790baaccSWarner Losh 78790baaccSWarner Losh #define TARGET_TRAP_BRKPT 1 79790baaccSWarner Losh #define TARGET_TRAP_TRACE 2 80790baaccSWarner Losh 81790baaccSWarner Losh 829c092804SMarkus Armbruster #endif /* TARGET_OS_SIGINFO_H */ 83