1 #ifndef TARGET_OS_SIGINFO_H
2 #define TARGET_OS_SIGINFO_H
3 
4 #define TARGET_NSIG     32   /* counting 0; could be 33 (mask is 1-32) */
5 #define TARGET_NSIG_BPW     (sizeof(uint32_t) * 8)
6 #define TARGET_NSIG_WORDS   (TARGET_NSIG / TARGET_NSIG_BPW)
7 
8 /* this struct defines a stack used during syscall handling */
9 typedef struct target_sigaltstack {
10     abi_long    ss_sp;
11     abi_ulong   ss_size;
12     abi_long    ss_flags;
13 } target_stack_t;
14 
15 typedef struct {
16     uint32_t __bits[TARGET_NSIG_WORDS];
17 } target_sigset_t
18 
19 struct target_sigaction {
20     abi_ulong   _sa_handler;
21     int32_t     sa_flags;
22     target_sigset_t sa_mask;
23 };
24 
25 /* Compare to sys/siginfo.h */
26 typedef union target_sigval {
27     int         sival_int;
28     abi_ulong   sival_ptr;
29 } target_sigval_t;
30 
31 struct target_ksiginfo {
32     int32_t     _signo;
33     int32_t     _code;
34     int32_t     _errno;
35 #if TARGET_ABI_BITS == 64
36     int32_t     _pad;
37 #endif
38     union {
39         struct {
40             int32_t             _pid;
41             int32_t             _uid;
42             target_sigval_t    _value;
43         } _rt;
44 
45         struct {
46             int32_t             _pid;
47             int32_t             _uid;
48             int32_t             _struct;
49             /* clock_t          _utime; */
50             /* clock_t          _stime; */
51         } _child;
52 
53         struct {
54             abi_ulong           _addr;
55             int32_t             _trap;
56         } _fault;
57 
58         struct {
59             long                _band;
60             int                 _fd;
61         } _poll;
62     } _reason;
63 };
64 
65 typedef union target_siginfo {
66     int8_t     si_pad[128];
67     struct     target_ksiginfo  _info;
68 } target_siginfo_t;
69 
70 #define target_si_signo     _info._signo
71 #define target_si_code      _info._code
72 #define target_si_errno     _info._errno
73 #define target_si_addr      _info._reason._fault._addr
74 
75 #define TARGET_SEGV_MAPERR  1
76 #define TARGET_SEGV_ACCERR  2
77 
78 #define TARGET_TRAP_BRKPT   1
79 #define TARGET_TRAP_TRACE   2
80 
81 
82 #endif /* TARGET_OS_SIGINFO_H */
83