xref: /qemu/bsd-user/netbsd/target_os_siginfo.h (revision 9c092804)
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