linux_signal.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /* $OpenBSD: linux_signal.h,v 1.9 2011/04/05 22:54:31 pirofti Exp $ */
  2. /* $NetBSD: linux_signal.h,v 1.4 1995/08/27 20:51:51 fvdl Exp $ */
  3. /*
  4. * Copyright (c) 1995 Frank van der Linden
  5. * All rights reserved.
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions
  9. * are met:
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * 2. Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. * 3. All advertising materials mentioning features or use of this software
  16. * must display the following acknowledgement:
  17. * This product includes software developed for the NetBSD Project
  18. * by Frank van der Linden
  19. * 4. The name of the author may not be used to endorse or promote products
  20. * derived from this software without specific prior written permission
  21. *
  22. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  23. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  24. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  25. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  26. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  27. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  28. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  29. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  30. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  31. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. */
  33. #ifndef _LINUX_SIGNAL_H_
  34. #define _LINUX_SIGNAL_H_
  35. #define LINUX_SIGHUP 1
  36. #define LINUX_SIGINT 2
  37. #define LINUX_SIGQUIT 3
  38. #define LINUX_SIGILL 4
  39. #define LINUX_SIGTRAP 5
  40. #define LINUX_SIGABRT 6
  41. #define LINUX_SIGIOT 6
  42. #define LINUX_SIGBUS 7
  43. #define LINUX_SIGFPE 8
  44. #define LINUX_SIGKILL 9
  45. #define LINUX_SIGUSR1 10
  46. #define LINUX_SIGSEGV 11
  47. #define LINUX_SIGUSR2 12
  48. #define LINUX_SIGPIPE 13
  49. #define LINUX_SIGALRM 14
  50. #define LINUX_SIGTERM 15
  51. #define LINUX_SIGSTKFLT 16
  52. #define LINUX_SIGCHLD 17
  53. #define LINUX_SIGCONT 18
  54. #define LINUX_SIGSTOP 19
  55. #define LINUX_SIGTSTP 20
  56. #define LINUX_SIGTTIN 21
  57. #define LINUX_SIGTTOU 22
  58. #define LINUX_SIGURG 23
  59. #define LINUX_SIGXCPU 24
  60. #define LINUX_SIGXFSZ 25
  61. #define LINUX_SIGVTALRM 26
  62. #define LINUX_SIGPROF 27
  63. #define LINUX_SIGWINCH 28
  64. #define LINUX_SIGIO 29
  65. #define LINUX_SIGPWR 30
  66. #define LINUX_SIGUNUSED 31
  67. #define LINUX_NSIG 32
  68. #define LINUX__NSIG 64
  69. #define LINUX__NSIG_BPW 32
  70. #define LINUX__NSIG_WORDS (LINUX__NSIG / LINUX__NSIG_BPW)
  71. #define LINUX_SIG_BLOCK 0
  72. #define LINUX_SIG_UNBLOCK 1
  73. #define LINUX_SIG_SETMASK 2
  74. typedef u_long linux_old_sigset_t;
  75. typedef struct {
  76. u_long sig[LINUX__NSIG_WORDS];
  77. } linux_sigset_t;
  78. typedef void (*linux_handler_t)(int);
  79. struct linux_old_sigaction {
  80. linux_handler_t sa__handler;
  81. linux_old_sigset_t sa_mask;
  82. u_long sa_flags;
  83. void (*sa_restorer)(void);
  84. };
  85. struct linux_sigaction {
  86. linux_handler_t sa__handler;
  87. u_long sa_flags;
  88. void (*sa_restorer)(void);
  89. linux_sigset_t sa_mask;
  90. };
  91. /* sa_flags */
  92. #define LINUX_SA_NOCLDSTOP 0x00000001
  93. #define LINUX_SA_SIGINFO 0x00000004
  94. #define LINUX_SA_ONSTACK 0x08000000
  95. #define LINUX_SA_RESTART 0x10000000
  96. #define LINUX_SA_INTERRUPT 0x20000000
  97. #define LINUX_SA_NOMASK 0x40000000
  98. #define LINUX_SA_ONESHOT 0x80000000
  99. #define LINUX_SA_ALLBITS 0xf8000001
  100. struct linux_sigaltstack {
  101. void *ss_sp;
  102. int ss_flags;
  103. size_t ss_size;
  104. };
  105. /* ss_flags */
  106. #define LINUX_SS_ONSTACK 0x00000001
  107. #define LINUX_SS_DISABLE 0x00000002
  108. extern int bsd_to_linux_sig[];
  109. extern int linux_to_bsd_sig[];
  110. void linux_old_to_bsd_sigset(const linux_old_sigset_t *, sigset_t *);
  111. void bsd_to_linux_old_sigset(const sigset_t *, linux_old_sigset_t *);
  112. void linux_old_extra_to_bsd_sigset(const linux_old_sigset_t *,
  113. const unsigned long *, sigset_t *);
  114. void bsd_to_linux_old_extra_sigset(const sigset_t *,
  115. linux_old_sigset_t *, unsigned long *);
  116. void linux_to_bsd_sigset(const linux_sigset_t *, sigset_t *);
  117. void bsd_to_linux_sigset(const sigset_t *, linux_sigset_t *);
  118. void linux_old_to_bsd_sigaction(struct linux_old_sigaction *,
  119. struct sigaction *);
  120. void bsd_to_linux_old_sigaction(struct sigaction *,
  121. struct linux_old_sigaction *);
  122. void linux_to_bsd_sigaction(struct linux_sigaction *,
  123. struct sigaction *);
  124. void bsd_to_linux_sigaction(struct sigaction *,
  125. struct linux_sigaction *);
  126. int linux_to_bsd_signal (int, int *);
  127. int bsd_to_linux_signal (int, int *);
  128. #endif /* !_LINUX_SIGNAL_H_ */