1#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
2 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
3
4#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
5#define MINSIGSTKSZ 2048
6#define SIGSTKSZ 8192
7#endif
8
9#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
10typedef unsigned long long greg_t, gregset_t[32];
11
12typedef struct {
13	union {
14		double fp_dregs[32];
15		struct {
16			float _fp_fregs;
17			unsigned _fp_pad;
18		} fp_fregs[32];
19	} fp_r;
20} fpregset_t;
21
22struct sigcontext {
23	unsigned long long sc_regs[32];
24	unsigned long long sc_fpregs[32];
25	unsigned long long sc_mdhi;
26	unsigned long long sc_hi1;
27	unsigned long long sc_hi2;
28	unsigned long long sc_hi3;
29	unsigned long long sc_mdlo;
30	unsigned long long sc_lo1;
31	unsigned long long sc_lo2;
32	unsigned long long sc_lo3;
33	unsigned long long sc_pc;
34	unsigned int sc_fpc_csr;
35	unsigned int sc_used_math;
36	unsigned int sc_dsp;
37	unsigned int sc_reserved;
38};
39
40typedef struct {
41	gregset_t gregs;
42	fpregset_t fpregs;
43	greg_t mdhi;
44	greg_t hi1;
45	greg_t hi2;
46	greg_t hi3;
47	greg_t mdlo;
48	greg_t lo1;
49	greg_t lo2;
50	greg_t lo3;
51	greg_t pc;
52	unsigned int fpc_csr;
53	unsigned int used_math;
54	unsigned int dsp;
55	unsigned int reserved;
56} mcontext_t;
57
58#else
59typedef struct {
60	unsigned long long __mc1[32];
61	double __mc2[32];
62	unsigned long long __mc3[9];
63	unsigned __mc4[4];
64} mcontext_t;
65#endif
66
67struct sigaltstack {
68	void *ss_sp;
69	size_t ss_size;
70	int ss_flags;
71};
72
73typedef struct __ucontext {
74	unsigned long uc_flags;
75	struct __ucontext *uc_link;
76	stack_t uc_stack;
77	mcontext_t uc_mcontext;
78	sigset_t uc_sigmask;
79} ucontext_t;
80
81#define SA_NOCLDSTOP  1
82#define SA_NOCLDWAIT  0x10000
83#define SA_SIGINFO    8
84#define SA_ONSTACK    0x08000000
85#define SA_RESTART    0x10000000
86#define SA_NODEFER    0x40000000
87#define SA_RESETHAND  0x80000000
88#define SA_RESTORER   0x04000000
89
90#undef SIG_BLOCK
91#undef SIG_UNBLOCK
92#undef SIG_SETMASK
93#define SIG_BLOCK     1
94#define SIG_UNBLOCK   2
95#define SIG_SETMASK   3
96
97#undef SI_ASYNCIO
98#undef SI_MESGQ
99#undef SI_TIMER
100#define SI_ASYNCIO (-2)
101#define SI_MESGQ (-4)
102#define SI_TIMER (-3)
103
104#define __SI_SWAP_ERRNO_CODE
105
106#endif
107
108#define SIGHUP    1
109#define SIGINT    2
110#define SIGQUIT   3
111#define SIGILL    4
112#define SIGTRAP   5
113#define SIGABRT   6
114#define SIGIOT    SIGABRT
115#define SIGSTKFLT 7
116#define SIGFPE    8
117#define SIGKILL   9
118#define SIGBUS    10
119#define SIGSEGV   11
120#define SIGSYS    12
121#define SIGPIPE   13
122#define SIGALRM   14
123#define SIGTERM   15
124#define SIGUSR1   16
125#define SIGUSR2   17
126#define SIGCHLD   18
127#define SIGPWR    19
128#define SIGWINCH  20
129#define SIGURG    21
130#define SIGIO     22
131#define SIGPOLL   SIGIO
132#define SIGSTOP   23
133#define SIGTSTP   24
134#define SIGCONT   25
135#define SIGTTIN   26
136#define SIGTTOU   27
137#define SIGVTALRM 28
138#define SIGPROF   29
139#define SIGXCPU   30
140#define SIGXFSZ   31
141#define SIGUNUSED SIGSYS
142
143#define _NSIG 128
144