83 lines
2.0 KiB
C
83 lines
2.0 KiB
C
#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 */
|