signal.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  2. || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
  3. #ifdef _GNU_SOURCE
  4. #define REG_R8 0
  5. #define REG_R9 1
  6. #define REG_R10 2
  7. #define REG_R11 3
  8. #define REG_R12 4
  9. #define REG_R13 5
  10. #define REG_R14 6
  11. #define REG_R15 7
  12. #define REG_RDI 8
  13. #define REG_RSI 9
  14. #define REG_RBP 10
  15. #define REG_RBX 11
  16. #define REG_RDX 12
  17. #define REG_RAX 13
  18. #define REG_RCX 14
  19. #define REG_RSP 15
  20. #define REG_RIP 16
  21. #define REG_EFL 17
  22. #define REG_CSGSFS 18
  23. #define REG_ERR 19
  24. #define REG_TRAPNO 20
  25. #define REG_OLDMASK 21
  26. #define REG_CR2 22
  27. #endif
  28. #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
  29. typedef long long greg_t, gregset_t[23];
  30. typedef struct _fpstate {
  31. unsigned short cwd, swd, ftw, fop;
  32. unsigned long long rip, rdp;
  33. unsigned mxcsr, mxcr_mask;
  34. struct {
  35. unsigned short significand[4], exponent, padding[3];
  36. } _st[8];
  37. struct {
  38. unsigned element[4];
  39. } _xmm[16];
  40. unsigned padding[24];
  41. } *fpregset_t;
  42. struct sigcontext {
  43. unsigned long long r8, r9, r10, r11, r12, r13, r14, r15;
  44. unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
  45. unsigned short cs, gs, fs, __pad0;
  46. unsigned long long err, trapno, oldmask, cr2;
  47. struct _fpstate *fpstate;
  48. unsigned long long __reserved1[8];
  49. };
  50. typedef struct {
  51. gregset_t gregs;
  52. fpregset_t fpregs;
  53. unsigned long long __reserved1[8];
  54. } mcontext_t;
  55. #else
  56. typedef struct {
  57. unsigned long long __space[32];
  58. } mcontext_t;
  59. #endif
  60. struct sigaltstack {
  61. void *ss_sp;
  62. int ss_flags;
  63. size_t ss_size;
  64. };
  65. typedef struct __ucontext {
  66. unsigned long uc_flags;
  67. struct __ucontext *uc_link;
  68. stack_t uc_stack;
  69. mcontext_t uc_mcontext;
  70. sigset_t uc_sigmask;
  71. unsigned long long __fpregs_mem[64];
  72. } ucontext_t;
  73. #define SA_NOCLDSTOP 1
  74. #define SA_NOCLDWAIT 2
  75. #define SA_SIGINFO 4
  76. #define SA_ONSTACK 0x08000000
  77. #define SA_RESTART 0x10000000
  78. #define SA_NODEFER 0x40000000
  79. #define SA_RESETHAND 0x80000000
  80. #define SA_RESTORER 0x04000000
  81. #endif
  82. #define SIGHUP 1
  83. #define SIGINT 2
  84. #define SIGQUIT 3
  85. #define SIGILL 4
  86. #define SIGTRAP 5
  87. #define SIGABRT 6
  88. #define SIGIOT SIGABRT
  89. #define SIGBUS 7
  90. #define SIGFPE 8
  91. #define SIGKILL 9
  92. #define SIGUSR1 10
  93. #define SIGSEGV 11
  94. #define SIGUSR2 12
  95. #define SIGPIPE 13
  96. #define SIGALRM 14
  97. #define SIGTERM 15
  98. #define SIGSTKFLT 16
  99. #define SIGCHLD 17
  100. #define SIGCONT 18
  101. #define SIGSTOP 19
  102. #define SIGTSTP 20
  103. #define SIGTTIN 21
  104. #define SIGTTOU 22
  105. #define SIGURG 23
  106. #define SIGXCPU 24
  107. #define SIGXFSZ 25
  108. #define SIGVTALRM 26
  109. #define SIGPROF 27
  110. #define SIGWINCH 28
  111. #define SIGIO 29
  112. #define SIGPOLL 29
  113. #define SIGPWR 30
  114. #define SIGSYS 31
  115. #define SIGUNUSED SIGSYS
  116. #define _NSIG 65