OLD | NEW |
1 #ifndef _SIGNAL_H | 1 #ifndef _SIGNAL_H |
2 #define _SIGNAL_H | 2 #define _SIGNAL_H |
3 | 3 |
4 #ifdef __cplusplus | 4 #ifdef __cplusplus |
5 extern "C" { | 5 extern "C" { |
6 #endif | 6 #endif |
7 | 7 |
8 #include <features.h> | 8 #include <features.h> |
9 | 9 |
10 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ | 10 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \ |
11 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ | 11 defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) |
12 || defined(_BSD_SOURCE) | |
13 | 12 |
14 #ifdef _GNU_SOURCE | 13 #ifdef _GNU_SOURCE |
15 #define __ucontext ucontext | 14 #define __ucontext ucontext |
16 #endif | 15 #endif |
17 | 16 |
18 #define __NEED_size_t | 17 #define __NEED_size_t |
19 #define __NEED_pid_t | 18 #define __NEED_pid_t |
20 #define __NEED_uid_t | 19 #define __NEED_uid_t |
21 #define __NEED_struct_timespec | 20 #define __NEED_struct_timespec |
22 #define __NEED_pthread_t | 21 #define __NEED_pthread_t |
23 #define __NEED_pthread_attr_t | 22 #define __NEED_pthread_attr_t |
24 #define __NEED_time_t | 23 #define __NEED_time_t |
25 #define __NEED_clock_t | 24 #define __NEED_clock_t |
26 #define __NEED_sigset_t | 25 #define __NEED_sigset_t |
27 | 26 |
28 #include <bits/alltypes.h> | 27 #include <bits/alltypes.h> |
29 | 28 |
30 #define SIG_BLOCK 0 | 29 #define SIG_BLOCK 0 |
31 #define SIG_UNBLOCK 1 | 30 #define SIG_UNBLOCK 1 |
32 #define SIG_SETMASK 2 | 31 #define SIG_SETMASK 2 |
33 | 32 |
34 #define SI_ASYNCNL (-60) | 33 #define SI_ASYNCNL (-60) |
35 #define SI_TKILL (-6) | 34 #define SI_TKILL (-6) |
36 #define SI_SIGIO (-5) | 35 #define SI_SIGIO (-5) |
37 #define SI_ASYNCIO (-4) | 36 #define SI_ASYNCIO (-4) |
38 #define SI_MESGQ (-3) | 37 #define SI_MESGQ (-3) |
39 #define SI_TIMER (-2) | 38 #define SI_TIMER (-2) |
40 #define SI_QUEUE (-1) | 39 #define SI_QUEUE (-1) |
41 #define SI_USER 0 | 40 #define SI_USER 0 |
42 #define SI_KERNEL 128 | 41 #define SI_KERNEL 128 |
43 | 42 |
44 typedef struct sigaltstack stack_t; | 43 typedef struct sigaltstack stack_t; |
45 | 44 |
46 #endif | 45 #endif |
47 | 46 |
48 #include <bits/signal.h> | 47 #include <bits/signal.h> |
49 | 48 |
50 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ | 49 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \ |
51 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ | 50 defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) |
52 || defined(_BSD_SOURCE) | |
53 | 51 |
54 #define SIG_HOLD ((void (*)(int)) 2) | 52 #define SIG_HOLD ((void (*)(int))2) |
55 | 53 |
56 #define FPE_INTDIV 1 | 54 #define FPE_INTDIV 1 |
57 #define FPE_INTOVF 2 | 55 #define FPE_INTOVF 2 |
58 #define FPE_FLTDIV 3 | 56 #define FPE_FLTDIV 3 |
59 #define FPE_FLTOVF 4 | 57 #define FPE_FLTOVF 4 |
60 #define FPE_FLTUND 5 | 58 #define FPE_FLTUND 5 |
61 #define FPE_FLTRES 6 | 59 #define FPE_FLTRES 6 |
62 #define FPE_FLTINV 7 | 60 #define FPE_FLTINV 7 |
63 #define FPE_FLTSUB 8 | 61 #define FPE_FLTSUB 8 |
64 | 62 |
(...skipping 17 matching lines...) Expand all Loading... |
82 #define BUS_MCEERR_AO 5 | 80 #define BUS_MCEERR_AO 5 |
83 | 81 |
84 #define CLD_EXITED 1 | 82 #define CLD_EXITED 1 |
85 #define CLD_KILLED 2 | 83 #define CLD_KILLED 2 |
86 #define CLD_DUMPED 3 | 84 #define CLD_DUMPED 3 |
87 #define CLD_TRAPPED 4 | 85 #define CLD_TRAPPED 4 |
88 #define CLD_STOPPED 5 | 86 #define CLD_STOPPED 5 |
89 #define CLD_CONTINUED 6 | 87 #define CLD_CONTINUED 6 |
90 | 88 |
91 union sigval { | 89 union sigval { |
92 » int sival_int; | 90 int sival_int; |
93 » void *sival_ptr; | 91 void* sival_ptr; |
94 }; | 92 }; |
95 | 93 |
96 typedef struct { | 94 typedef struct { |
97 #ifdef __SI_SWAP_ERRNO_CODE | 95 #ifdef __SI_SWAP_ERRNO_CODE |
98 » int si_signo, si_code, si_errno; | 96 int si_signo, si_code, si_errno; |
99 #else | 97 #else |
100 » int si_signo, si_errno, si_code; | 98 int si_signo, si_errno, si_code; |
101 #endif | 99 #endif |
102 » union { | 100 union { |
103 » » char __pad[128 - 2*sizeof(int) - sizeof(long)]; | 101 char __pad[128 - 2 * sizeof(int) - sizeof(long)]; |
104 » » struct { | 102 struct { |
105 » » » union { | 103 union { |
106 » » » » struct { | 104 struct { |
107 » » » » » pid_t si_pid; | 105 pid_t si_pid; |
108 » » » » » uid_t si_uid; | 106 uid_t si_uid; |
109 » » » » } __piduid; | 107 } __piduid; |
110 » » » » struct { | 108 struct { |
111 » » » » » int si_timerid; | 109 int si_timerid; |
112 » » » » » int si_overrun; | 110 int si_overrun; |
113 » » » » } __timer; | 111 } __timer; |
114 » » » } __first; | 112 } __first; |
115 » » » union { | 113 union { |
116 » » » » union sigval si_value; | 114 union sigval si_value; |
117 » » » » struct { | 115 struct { |
118 » » » » » int si_status; | 116 int si_status; |
119 » » » » » clock_t si_utime, si_stime; | 117 clock_t si_utime, si_stime; |
120 » » » » } __sigchld; | 118 } __sigchld; |
121 » » » } __second; | 119 } __second; |
122 » » } __si_common; | 120 } __si_common; |
123 » » struct { | 121 struct { |
124 » » » void *si_addr; | 122 void* si_addr; |
125 » » » short si_addr_lsb; | 123 short si_addr_lsb; |
126 » » » struct { | 124 struct { |
127 » » » » void *si_lower; | 125 void* si_lower; |
128 » » » » void *si_upper; | 126 void* si_upper; |
129 » » » } __addr_bnd; | 127 } __addr_bnd; |
130 » » } __sigfault; | 128 } __sigfault; |
131 » » struct { | 129 struct { |
132 » » » long si_band; | 130 long si_band; |
133 » » » int si_fd; | 131 int si_fd; |
134 » » } __sigpoll; | 132 } __sigpoll; |
135 » » struct { | 133 struct { |
136 » » » void *si_call_addr; | 134 void* si_call_addr; |
137 » » » int si_syscall; | 135 int si_syscall; |
138 » » » unsigned si_arch; | 136 unsigned si_arch; |
139 » » } __sigsys; | 137 } __sigsys; |
140 » } __si_fields; | 138 } __si_fields; |
141 } siginfo_t; | 139 } siginfo_t; |
142 #define si_pid __si_fields.__si_common.__first.__piduid.si_pid | 140 #define si_pid __si_fields.__si_common.__first.__piduid.si_pid |
143 #define si_uid __si_fields.__si_common.__first.__piduid.si_uid | 141 #define si_uid __si_fields.__si_common.__first.__piduid.si_uid |
144 #define si_status __si_fields.__si_common.__second.__sigchld.si_status | 142 #define si_status __si_fields.__si_common.__second.__sigchld.si_status |
145 #define si_utime __si_fields.__si_common.__second.__sigchld.si_utime | 143 #define si_utime __si_fields.__si_common.__second.__sigchld.si_utime |
146 #define si_stime __si_fields.__si_common.__second.__sigchld.si_stime | 144 #define si_stime __si_fields.__si_common.__second.__sigchld.si_stime |
147 #define si_value __si_fields.__si_common.__second.si_value | 145 #define si_value __si_fields.__si_common.__second.si_value |
148 #define si_addr __si_fields.__sigfault.si_addr | 146 #define si_addr __si_fields.__sigfault.si_addr |
149 #define si_addr_lsb __si_fields.__sigfault.si_addr_lsb | 147 #define si_addr_lsb __si_fields.__sigfault.si_addr_lsb |
150 #define si_lower __si_fields.__sigfault.__addr_bnd.si_lower | 148 #define si_lower __si_fields.__sigfault.__addr_bnd.si_lower |
151 #define si_upper __si_fields.__sigfault.__addr_bnd.si_upper | 149 #define si_upper __si_fields.__sigfault.__addr_bnd.si_upper |
152 #define si_band __si_fields.__sigpoll.si_band | 150 #define si_band __si_fields.__sigpoll.si_band |
153 #define si_fd __si_fields.__sigpoll.si_fd | 151 #define si_fd __si_fields.__sigpoll.si_fd |
154 #define si_timerid __si_fields.__si_common.__first.__timer.si_timerid | 152 #define si_timerid __si_fields.__si_common.__first.__timer.si_timerid |
155 #define si_overrun __si_fields.__si_common.__first.__timer.si_overrun | 153 #define si_overrun __si_fields.__si_common.__first.__timer.si_overrun |
156 #define si_ptr si_value.sival_ptr | 154 #define si_ptr si_value.sival_ptr |
157 #define si_int si_value.sival_int | 155 #define si_int si_value.sival_int |
158 #define si_call_addr __si_fields.__sigsys.si_call_addr | 156 #define si_call_addr __si_fields.__sigsys.si_call_addr |
159 #define si_syscall __si_fields.__sigsys.si_syscall | 157 #define si_syscall __si_fields.__sigsys.si_syscall |
160 #define si_arch __si_fields.__sigsys.si_arch | 158 #define si_arch __si_fields.__sigsys.si_arch |
161 | 159 |
162 struct sigaction { | 160 struct sigaction { |
163 » union { | 161 union { |
164 » » void (*sa_handler)(int); | 162 void (*sa_handler)(int); |
165 » » void (*sa_sigaction)(int, siginfo_t *, void *); | 163 void (*sa_sigaction)(int, siginfo_t*, void*); |
166 » } __sa_handler; | 164 } __sa_handler; |
167 » sigset_t sa_mask; | 165 sigset_t sa_mask; |
168 » int sa_flags; | 166 int sa_flags; |
169 » void (*sa_restorer)(void); | 167 void (*sa_restorer)(void); |
170 }; | 168 }; |
171 #define sa_handler __sa_handler.sa_handler | 169 #define sa_handler __sa_handler.sa_handler |
172 #define sa_sigaction __sa_handler.sa_sigaction | 170 #define sa_sigaction __sa_handler.sa_sigaction |
173 | 171 |
174 struct sigevent { | 172 struct sigevent { |
175 » union sigval sigev_value; | 173 union sigval sigev_value; |
176 » int sigev_signo; | 174 int sigev_signo; |
177 » int sigev_notify; | 175 int sigev_notify; |
178 » void (*sigev_notify_function)(union sigval); | 176 void (*sigev_notify_function)(union sigval); |
179 » pthread_attr_t *sigev_notify_attributes; | 177 pthread_attr_t* sigev_notify_attributes; |
180 » char __pad[56-3*sizeof(long)]; | 178 char __pad[56 - 3 * sizeof(long)]; |
181 }; | 179 }; |
182 | 180 |
183 #define SIGEV_SIGNAL 0 | 181 #define SIGEV_SIGNAL 0 |
184 #define SIGEV_NONE 1 | 182 #define SIGEV_NONE 1 |
185 #define SIGEV_THREAD 2 | 183 #define SIGEV_THREAD 2 |
186 | 184 |
187 int __libc_current_sigrtmin(void); | 185 int __libc_current_sigrtmin(void); |
188 int __libc_current_sigrtmax(void); | 186 int __libc_current_sigrtmax(void); |
189 | 187 |
190 #define SIGRTMIN (__libc_current_sigrtmin()) | 188 #define SIGRTMIN (__libc_current_sigrtmin()) |
191 #define SIGRTMAX (__libc_current_sigrtmax()) | 189 #define SIGRTMAX (__libc_current_sigrtmax()) |
192 | 190 |
193 int kill(pid_t, int); | 191 int kill(pid_t, int); |
194 | 192 |
195 int sigemptyset(sigset_t *); | 193 int sigemptyset(sigset_t*); |
196 int sigfillset(sigset_t *); | 194 int sigfillset(sigset_t*); |
197 int sigaddset(sigset_t *, int); | 195 int sigaddset(sigset_t*, int); |
198 int sigdelset(sigset_t *, int); | 196 int sigdelset(sigset_t*, int); |
199 int sigismember(const sigset_t *, int); | 197 int sigismember(const sigset_t*, int); |
200 | 198 |
201 int sigprocmask(int, const sigset_t *__restrict, sigset_t *__restrict); | 199 int sigprocmask(int, const sigset_t* __restrict, sigset_t* __restrict); |
202 int sigsuspend(const sigset_t *); | 200 int sigsuspend(const sigset_t*); |
203 int sigaction(int, const struct sigaction *__restrict, struct sigaction *__restr
ict); | 201 int sigaction(int, |
204 int sigpending(sigset_t *); | 202 const struct sigaction* __restrict, |
205 int sigwait(const sigset_t *__restrict, int *__restrict); | 203 struct sigaction* __restrict); |
206 int sigwaitinfo(const sigset_t *__restrict, siginfo_t *__restrict); | 204 int sigpending(sigset_t*); |
207 int sigtimedwait(const sigset_t *__restrict, siginfo_t *__restrict, const struct
timespec *__restrict); | 205 int sigwait(const sigset_t* __restrict, int* __restrict); |
| 206 int sigwaitinfo(const sigset_t* __restrict, siginfo_t* __restrict); |
| 207 int sigtimedwait(const sigset_t* __restrict, |
| 208 siginfo_t* __restrict, |
| 209 const struct timespec* __restrict); |
208 int sigqueue(pid_t, int, const union sigval); | 210 int sigqueue(pid_t, int, const union sigval); |
209 | 211 |
210 int pthread_sigmask(int, const sigset_t *__restrict, sigset_t *__restrict); | 212 int pthread_sigmask(int, const sigset_t* __restrict, sigset_t* __restrict); |
211 int pthread_kill(pthread_t, int); | 213 int pthread_kill(pthread_t, int); |
212 | 214 |
213 void psiginfo(const siginfo_t *, const char *); | 215 void psiginfo(const siginfo_t*, const char*); |
214 void psignal(int, const char *); | 216 void psignal(int, const char*); |
215 | 217 |
216 #endif | 218 #endif |
217 | 219 |
218 #if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE) | 220 #if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE) |
219 int killpg(pid_t, int); | 221 int killpg(pid_t, int); |
220 int sigaltstack(const stack_t *__restrict, stack_t *__restrict); | 222 int sigaltstack(const stack_t* __restrict, stack_t* __restrict); |
221 int sighold(int); | 223 int sighold(int); |
222 int sigignore(int); | 224 int sigignore(int); |
223 int siginterrupt(int, int); | 225 int siginterrupt(int, int); |
224 int sigpause(int); | 226 int sigpause(int); |
225 int sigrelse(int); | 227 int sigrelse(int); |
226 void (*sigset(int, void (*)(int)))(int); | 228 void (*sigset(int, void (*)(int)))(int); |
227 #define TRAP_BRKPT 1 | 229 #define TRAP_BRKPT 1 |
228 #define TRAP_TRACE 2 | 230 #define TRAP_TRACE 2 |
229 #define POLL_IN 1 | 231 #define POLL_IN 1 |
230 #define POLL_OUT 2 | 232 #define POLL_OUT 2 |
231 #define POLL_MSG 3 | 233 #define POLL_MSG 3 |
232 #define POLL_ERR 4 | 234 #define POLL_ERR 4 |
233 #define POLL_PRI 5 | 235 #define POLL_PRI 5 |
234 #define POLL_HUP 6 | 236 #define POLL_HUP 6 |
235 #define SS_ONSTACK 1 | 237 #define SS_ONSTACK 1 |
236 #define SS_DISABLE 2 | 238 #define SS_DISABLE 2 |
237 #endif | 239 #endif |
238 | 240 |
239 #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) | 241 #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) |
240 #define NSIG _NSIG | 242 #define NSIG _NSIG |
241 typedef void (*sig_t)(int); | 243 typedef void (*sig_t)(int); |
242 #endif | 244 #endif |
243 | 245 |
244 #ifdef _GNU_SOURCE | 246 #ifdef _GNU_SOURCE |
245 typedef void (*sighandler_t)(int); | 247 typedef void (*sighandler_t)(int); |
246 void (*bsd_signal(int, void (*)(int)))(int); | 248 void (*bsd_signal(int, void (*)(int)))(int); |
247 int sigisemptyset(const sigset_t *); | 249 int sigisemptyset(const sigset_t*); |
248 int sigorset (sigset_t *, const sigset_t *, const sigset_t *); | 250 int sigorset(sigset_t*, const sigset_t*, const sigset_t*); |
249 int sigandset(sigset_t *, const sigset_t *, const sigset_t *); | 251 int sigandset(sigset_t*, const sigset_t*, const sigset_t*); |
250 | 252 |
251 #define SA_NOMASK SA_NODEFER | 253 #define SA_NOMASK SA_NODEFER |
252 #define SA_ONESHOT SA_RESETHAND | 254 #define SA_ONESHOT SA_RESETHAND |
253 #endif | 255 #endif |
254 | 256 |
255 #define SIG_ERR ((void (*)(int))-1) | 257 #define SIG_ERR ((void (*)(int)) - 1) |
256 #define SIG_DFL ((void (*)(int)) 0) | 258 #define SIG_DFL ((void (*)(int))0) |
257 #define SIG_IGN ((void (*)(int)) 1) | 259 #define SIG_IGN ((void (*)(int))1) |
258 | 260 |
259 typedef int sig_atomic_t; | 261 typedef int sig_atomic_t; |
260 | 262 |
261 void (*signal(int, void (*)(int)))(int); | 263 void (*signal(int, void (*)(int)))(int); |
262 int raise(int); | 264 int raise(int); |
263 | 265 |
264 #ifdef __cplusplus | 266 #ifdef __cplusplus |
265 } | 267 } |
266 #endif | 268 #endif |
267 | 269 |
268 #endif | 270 #endif |
OLD | NEW |