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 #ifdef _GNU_SOURCE 10 enum { REG_GS = 0 }; 11 #define REG_GS REG_GS 12 enum { REG_FS = 1 }; 13 #define REG_FS REG_FS 14 enum { REG_ES = 2 }; 15 #define REG_ES REG_ES 16 enum { REG_DS = 3 }; 17 #define REG_DS REG_DS 18 enum { REG_EDI = 4 }; 19 #define REG_EDI REG_EDI 20 enum { REG_ESI = 5 }; 21 #define REG_ESI REG_ESI 22 enum { REG_EBP = 6 }; 23 #define REG_EBP REG_EBP 24 enum { REG_ESP = 7 }; 25 #define REG_ESP REG_ESP 26 enum { REG_EBX = 8 }; 27 #define REG_EBX REG_EBX 28 enum { REG_EDX = 9 }; 29 #define REG_EDX REG_EDX 30 enum { REG_ECX = 10 }; 31 #define REG_ECX REG_ECX 32 enum { REG_EAX = 11 }; 33 #define REG_EAX REG_EAX 34 enum { REG_TRAPNO = 12 }; 35 #define REG_TRAPNO REG_TRAPNO 36 enum { REG_ERR = 13 }; 37 #define REG_ERR REG_ERR 38 enum { REG_EIP = 14 }; 39 #define REG_EIP REG_EIP 40 enum { REG_CS = 15 }; 41 #define REG_CS REG_CS 42 enum { REG_EFL = 16 }; 43 #define REG_EFL REG_EFL 44 enum { REG_UESP = 17 }; 45 #define REG_UESP REG_UESP 46 enum { REG_SS = 18 }; 47 #define REG_SS REG_SS 48 #endif 49 50 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 51 typedef int greg_t, gregset_t[19]; 52 typedef struct _fpstate { 53 unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel; 54 struct { 55 unsigned short significand[4], exponent; 56 } _st[8]; 57 unsigned long status; 58 } *fpregset_t; 59 struct sigcontext { 60 unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh; 61 unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax; 62 unsigned long trapno, err, eip; 63 unsigned short cs, __csh; 64 unsigned long eflags, esp_at_signal; 65 unsigned short ss, __ssh; 66 struct _fpstate *fpstate; 67 unsigned long oldmask, cr2; 68 }; 69 typedef struct { 70 gregset_t gregs; 71 fpregset_t fpregs; 72 unsigned long oldmask, cr2; 73 } mcontext_t; 74 #else 75 typedef struct { 76 unsigned __space[22]; 77 } mcontext_t; 78 #endif 79 80 struct sigaltstack { 81 void *ss_sp; 82 int ss_flags; 83 size_t ss_size; 84 }; 85 86 typedef struct __ucontext { 87 unsigned long uc_flags; 88 struct __ucontext *uc_link; 89 stack_t uc_stack; 90 mcontext_t uc_mcontext; 91 sigset_t uc_sigmask; 92 unsigned long __fpregs_mem[28]; 93 } ucontext_t; 94 95 #define SA_NOCLDSTOP 1 96 #define SA_NOCLDWAIT 2 97 #define SA_SIGINFO 4 98 #define SA_ONSTACK 0x08000000 99 #define SA_RESTART 0x10000000 100 #define SA_NODEFER 0x40000000 101 #define SA_RESETHAND 0x80000000 102 #define SA_RESTORER 0x04000000 103 104 #endif 105 106 #define SIGHUP 1 107 #define SIGINT 2 108 #define SIGQUIT 3 109 #define SIGILL 4 110 #define SIGTRAP 5 111 #define SIGABRT 6 112 #define SIGIOT SIGABRT 113 #define SIGBUS 7 114 #define SIGFPE 8 115 #define SIGKILL 9 116 #define SIGUSR1 10 117 #define SIGSEGV 11 118 #define SIGUSR2 12 119 #define SIGPIPE 13 120 #define SIGALRM 14 121 #define SIGTERM 15 122 #define SIGSTKFLT 16 123 #define SIGCHLD 17 124 #define SIGCONT 18 125 #define SIGSTOP 19 126 #define SIGTSTP 20 127 #define SIGTTIN 21 128 #define SIGTTOU 22 129 #define SIGURG 23 130 #define SIGXCPU 24 131 #define SIGXFSZ 25 132 #define SIGVTALRM 26 133 #define SIGPROF 27 134 #define SIGWINCH 28 135 #define SIGIO 29 136 #define SIGPOLL 29 137 #define SIGPWR 30 138 #define SIGSYS 31 139 #define SIGUNUSED SIGSYS 140 141 #define _NSIG 65 142 143