home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / x86 / include / asm / signal.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  5.5 KB  |  263 lines

  1. #ifndef _ASM_X86_SIGNAL_H
  2. #define _ASM_X86_SIGNAL_H
  3.  
  4. #ifndef __ASSEMBLY__
  5. #include <linux/types.h>
  6. #include <linux/time.h>
  7. #include <linux/compiler.h>
  8.  
  9. /* Avoid too many header ordering problems.  */
  10. struct siginfo;
  11.  
  12. #ifdef __KERNEL__
  13. #include <linux/linkage.h>
  14.  
  15. /* Most things should be clean enough to redefine this at will, if care
  16.    is taken to make libc match.  */
  17.  
  18. #define _NSIG        64
  19.  
  20. #ifdef __i386__
  21. # define _NSIG_BPW    32
  22. #else
  23. # define _NSIG_BPW    64
  24. #endif
  25.  
  26. #define _NSIG_WORDS    (_NSIG / _NSIG_BPW)
  27.  
  28. typedef unsigned long old_sigset_t;        /* at least 32 bits */
  29.  
  30. typedef struct {
  31.     unsigned long sig[_NSIG_WORDS];
  32. } sigset_t;
  33.  
  34. #else
  35. /* Here we must cater to libcs that poke about in kernel headers.  */
  36.  
  37. #define NSIG        32
  38. typedef unsigned long sigset_t;
  39.  
  40. #endif /* __KERNEL__ */
  41. #endif /* __ASSEMBLY__ */
  42.  
  43. #define SIGHUP         1
  44. #define SIGINT         2
  45. #define SIGQUIT         3
  46. #define SIGILL         4
  47. #define SIGTRAP         5
  48. #define SIGABRT         6
  49. #define SIGIOT         6
  50. #define SIGBUS         7
  51. #define SIGFPE         8
  52. #define SIGKILL         9
  53. #define SIGUSR1        10
  54. #define SIGSEGV        11
  55. #define SIGUSR2        12
  56. #define SIGPIPE        13
  57. #define SIGALRM        14
  58. #define SIGTERM        15
  59. #define SIGSTKFLT    16
  60. #define SIGCHLD        17
  61. #define SIGCONT        18
  62. #define SIGSTOP        19
  63. #define SIGTSTP        20
  64. #define SIGTTIN        21
  65. #define SIGTTOU        22
  66. #define SIGURG        23
  67. #define SIGXCPU        24
  68. #define SIGXFSZ        25
  69. #define SIGVTALRM    26
  70. #define SIGPROF        27
  71. #define SIGWINCH    28
  72. #define SIGIO        29
  73. #define SIGPOLL        SIGIO
  74. /*
  75. #define SIGLOST        29
  76. */
  77. #define SIGPWR        30
  78. #define SIGSYS        31
  79. #define    SIGUNUSED    31
  80.  
  81. /* These should not be considered constants from userland.  */
  82. #define SIGRTMIN    32
  83. #define SIGRTMAX    _NSIG
  84.  
  85. /*
  86.  * SA_FLAGS values:
  87.  *
  88.  * SA_ONSTACK indicates that a registered stack_t will be used.
  89.  * SA_RESTART flag to get restarting signals (which were the default long ago)
  90.  * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
  91.  * SA_RESETHAND clears the handler when the signal is delivered.
  92.  * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
  93.  * SA_NODEFER prevents the current signal from being masked in the handler.
  94.  *
  95.  * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
  96.  * Unix names RESETHAND and NODEFER respectively.
  97.  */
  98. #define SA_NOCLDSTOP    0x00000001u
  99. #define SA_NOCLDWAIT    0x00000002u
  100. #define SA_SIGINFO    0x00000004u
  101. #define SA_ONSTACK    0x08000000u
  102. #define SA_RESTART    0x10000000u
  103. #define SA_NODEFER    0x40000000u
  104. #define SA_RESETHAND    0x80000000u
  105.  
  106. #define SA_NOMASK    SA_NODEFER
  107. #define SA_ONESHOT    SA_RESETHAND
  108.  
  109. #define SA_RESTORER    0x04000000
  110.  
  111. /*
  112.  * sigaltstack controls
  113.  */
  114. #define SS_ONSTACK    1
  115. #define SS_DISABLE    2
  116.  
  117. #define MINSIGSTKSZ    2048
  118. #define SIGSTKSZ    8192
  119.  
  120. #include <asm-generic/signal.h>
  121.  
  122. #ifndef __ASSEMBLY__
  123.  
  124. #ifdef __i386__
  125. # ifdef __KERNEL__
  126. struct old_sigaction {
  127.     __sighandler_t sa_handler;
  128.     old_sigset_t sa_mask;
  129.     unsigned long sa_flags;
  130.     __sigrestore_t sa_restorer;
  131. };
  132.  
  133. struct sigaction {
  134.     __sighandler_t sa_handler;
  135.     unsigned long sa_flags;
  136.     __sigrestore_t sa_restorer;
  137.     sigset_t sa_mask;        /* mask last for extensibility */
  138. };
  139.  
  140. struct k_sigaction {
  141.     struct sigaction sa;
  142. };
  143.  
  144. extern void do_notify_resume(struct pt_regs *, void *, __u32);
  145.  
  146. # else /* __KERNEL__ */
  147. /* Here we must cater to libcs that poke about in kernel headers.  */
  148.  
  149. struct sigaction {
  150.     union {
  151.       __sighandler_t _sa_handler;
  152.       void (*_sa_sigaction)(int, struct siginfo *, void *);
  153.     } _u;
  154.     sigset_t sa_mask;
  155.     unsigned long sa_flags;
  156.     void (*sa_restorer)(void);
  157. };
  158.  
  159. #define sa_handler    _u._sa_handler
  160. #define sa_sigaction    _u._sa_sigaction
  161.  
  162. # endif /* ! __KERNEL__ */
  163. #else /* __i386__ */
  164.  
  165. struct sigaction {
  166.     __sighandler_t sa_handler;
  167.     unsigned long sa_flags;
  168.     __sigrestore_t sa_restorer;
  169.     sigset_t sa_mask;        /* mask last for extensibility */
  170. };
  171.  
  172. struct k_sigaction {
  173.     struct sigaction sa;
  174. };
  175.  
  176. #endif /* !__i386__ */
  177.  
  178. typedef struct sigaltstack {
  179.     void __user *ss_sp;
  180.     int ss_flags;
  181.     size_t ss_size;
  182. } stack_t;
  183.  
  184. #ifdef __KERNEL__
  185. #include <asm/sigcontext.h>
  186.  
  187. #ifdef __i386__
  188.  
  189. #define __HAVE_ARCH_SIG_BITOPS
  190.  
  191. #define sigaddset(set,sig)            \
  192.     (__builtin_constant_p(sig)        \
  193.      ? __const_sigaddset((set), (sig))  \
  194.      : __gen_sigaddset((set), (sig)))
  195.  
  196. static inline void __gen_sigaddset(sigset_t *set, int _sig)
  197. {
  198.     asm("btsl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");
  199. }
  200.  
  201. static inline void __const_sigaddset(sigset_t *set, int _sig)
  202. {
  203.     unsigned long sig = _sig - 1;
  204.     set->sig[sig / _NSIG_BPW] |= 1 << (sig % _NSIG_BPW);
  205. }
  206.  
  207. #define sigdelset(set, sig)            \
  208.     (__builtin_constant_p(sig)        \
  209.      ? __const_sigdelset((set), (sig))  \
  210.      : __gen_sigdelset((set), (sig)))
  211.  
  212.  
  213. static inline void __gen_sigdelset(sigset_t *set, int _sig)
  214. {
  215.     asm("btrl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");
  216. }
  217.  
  218. static inline void __const_sigdelset(sigset_t *set, int _sig)
  219. {
  220.     unsigned long sig = _sig - 1;
  221.     set->sig[sig / _NSIG_BPW] &= ~(1 << (sig % _NSIG_BPW));
  222. }
  223.  
  224. static inline int __const_sigismember(sigset_t *set, int _sig)
  225. {
  226.     unsigned long sig = _sig - 1;
  227.     return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
  228. }
  229.  
  230. static inline int __gen_sigismember(sigset_t *set, int _sig)
  231. {
  232.     int ret;
  233.     asm("btl %2,%1\n\tsbbl %0,%0"
  234.         : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");
  235.     return ret;
  236. }
  237.  
  238. #define sigismember(set, sig)            \
  239.     (__builtin_constant_p(sig)        \
  240.      ? __const_sigismember((set), (sig))    \
  241.      : __gen_sigismember((set), (sig)))
  242.  
  243. static inline int sigfindinword(unsigned long word)
  244. {
  245.     asm("bsfl %1,%0" : "=r"(word) : "rm"(word) : "cc");
  246.     return word;
  247. }
  248.  
  249. struct pt_regs;
  250.  
  251. #else /* __i386__ */
  252.  
  253. #undef __HAVE_ARCH_SIG_BITOPS
  254.  
  255. #endif /* !__i386__ */
  256.  
  257. #define ptrace_signal_deliver(regs, cookie) do { } while (0)
  258.  
  259. #endif /* __KERNEL__ */
  260. #endif /* __ASSEMBLY__ */
  261.  
  262. #endif /* _ASM_X86_SIGNAL_H */
  263.