#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-struct __siginfo
-{
- int si_signo;
- int si_errno;
- int si_code;
- union
- {
- int __pad[(128 - 4*sizeof(int)) / sizeof(int)];
- struct {
- pid_t si_pid;
- uid_t si_uid;
- } __kill;
- struct {
- timer_t si_timerid;
- int si_overrun;
- char __pad[sizeof(uid_t) - sizeof(int)];
- union sigval si_sigval;
- int si_private;
- } __timer;
- struct {
- pid_t si_pid;
- uid_t si_uid;
- union sigval si_sigval;
- } __rt;
- struct {
- pid_t si_pid;
- uid_t si_uid;
- int si_status;
- clock_t si_utime;
- clock_t si_stime;
- } __sigchld;
- struct {
- void *si_addr;
- short addr_lsb;
- } __sigfault;
- struct {
- long si_band;
- int si_fd;
- } __sigpoll;
- } __si_fields;
+struct __fpstate {
+ unsigned long __x[4];
+ unsigned char __y[384];
+ unsigned long __z[12];
};
-#define si_pid __si_fields.__sigchld.si_pid
-#define si_uid __si_fields.__sigchld.si_uid
-#define si_status __si_fields.__sigchld.si_status
-#define si_utime __si_fields.__sigchld.si_utime
-#define si_stime __si_fields.__sigchld.si_stime
-#define si_value __si_fields.__rt.si_sigval
-#define si_addr __si_fields.__sigfault.si_addr
-#define si_band __si_fields.__sigpoll.si_band
+typedef struct {
+ unsigned long __gregs[23];
+ void *__fpregs;
+ unsigned long __reserved1[8];
+} mcontext_t;
+
+typedef struct __ucontext {
+ unsigned long uc_flags;
+ struct __ucontext *uc_link;
+ stack_t uc_stack;
+ mcontext_t uc_mcontext;
+ sigset_t uc_sigmask;
+ struct __fpstate __fpregs_mem;
+} ucontext_t;
#define SA_NOCLDSTOP 1
#define SA_NOCLDWAIT 2
#define SA_RESETHAND 0x80000000
#define SA_RESTORER 0x04000000
-#define SS_ONSTACK 1
-#define SS_DISABLE 2
-
-#define SIG_BLOCK 0
-#define SIG_UNBLOCK 1
-#define SIG_SETMASK 2
-
-#define SIG_HOLD ((void (*)(int)) 2)
-
-#endif
-
-#ifdef _GNU_SOURCE
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct sigcontext {
+ unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
+ unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
+ unsigned short cs, gs, fs, __pad0;
+ unsigned long err, trapno, oldmask, cr2;
+ struct __fpstate *fpstate;
+ unsigned long __reserved1[8];
+};
#define NSIG 64
#endif
-#define SIG_ERR ((void (*)(int))-1)
-#define SIG_DFL ((void (*)(int)) 0)
-#define SIG_IGN ((void (*)(int)) 1)
+#endif
#define SIGHUP 1
#define SIGINT 2