root/arch/x86/include/asm/signal.h

/* [previous][next][first][last][top][bottom][index][help] [+1 arch/x86/include/asm/signal.h] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. __gen_sigaddset
  2. __const_sigaddset
  3. __gen_sigdelset
  4. __const_sigdelset
  5. __const_sigismember
  6. __gen_sigismember

   1 #ifndef _ASM_X86_SIGNAL_H
   2 #define _ASM_X86_SIGNAL_H
   3 
   4 #ifndef __ASSEMBLY__
   5 #include <linux/linkage.h>
   6 
   7 /* Most things should be clean enough to redefine this at will, if care
   8    is taken to make libc match.  */
   9 
  10 #define _NSIG           64
  11 
  12 #ifdef __i386__
  13 # define _NSIG_BPW      32
  14 #else
  15 # define _NSIG_BPW      64
  16 #endif
  17 
  18 #define _NSIG_WORDS     (_NSIG / _NSIG_BPW)
  19 
  20 typedef unsigned long old_sigset_t;             /* at least 32 bits */
  21 
  22 typedef struct {
  23         unsigned long sig[_NSIG_WORDS];
  24 } sigset_t;
  25 
  26 #ifndef CONFIG_COMPAT
  27 typedef sigset_t compat_sigset_t;
  28 #endif
  29 
  30 #endif /* __ASSEMBLY__ */
  31 #include <uapi/asm/signal.h>
  32 #ifndef __ASSEMBLY__
  33 extern void do_signal(struct pt_regs *regs);
  34 
  35 #define __ARCH_HAS_SA_RESTORER
  36 
  37 #include <uapi/asm/sigcontext.h>
  38 
  39 #ifdef __i386__
  40 
  41 #define __HAVE_ARCH_SIG_BITOPS
  42 
  43 #define sigaddset(set,sig)                  \
  44         (__builtin_constant_p(sig)          \
  45          ? __const_sigaddset((set), (sig))  \
  46          : __gen_sigaddset((set), (sig)))
  47 
  48 static inline void __gen_sigaddset(sigset_t *set, int _sig)
     /* [previous][next][first][last][top][bottom][index][help] [+48 arch/x86/include/asm/signal.h] */
  49 {
  50         asm("btsl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");
  51 }
  52 
  53 static inline void __const_sigaddset(sigset_t *set, int _sig)
     /* [previous][next][first][last][top][bottom][index][help] [+53 arch/x86/include/asm/signal.h] */
  54 {
  55         unsigned long sig = _sig - 1;
  56         set->sig[sig / _NSIG_BPW] |= 1 << (sig % _NSIG_BPW);
  57 }
  58 
  59 #define sigdelset(set, sig)                 \
  60         (__builtin_constant_p(sig)          \
  61          ? __const_sigdelset((set), (sig))  \
  62          : __gen_sigdelset((set), (sig)))
  63 
  64 
  65 static inline void __gen_sigdelset(sigset_t *set, int _sig)
     /* [previous][next][first][last][top][bottom][index][help] [+65 arch/x86/include/asm/signal.h] */
  66 {
  67         asm("btrl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");
  68 }
  69 
  70 static inline void __const_sigdelset(sigset_t *set, int _sig)
     /* [previous][next][first][last][top][bottom][index][help] [+70 arch/x86/include/asm/signal.h] */
  71 {
  72         unsigned long sig = _sig - 1;
  73         set->sig[sig / _NSIG_BPW] &= ~(1 << (sig % _NSIG_BPW));
  74 }
  75 
  76 static inline int __const_sigismember(sigset_t *set, int _sig)
     /* [previous][next][first][last][top][bottom][index][help] [+76 arch/x86/include/asm/signal.h] */
  77 {
  78         unsigned long sig = _sig - 1;
  79         return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
  80 }
  81 
  82 static inline int __gen_sigismember(sigset_t *set, int _sig)
     /* [previous][next][first][last][top][bottom][index][help] [+82 arch/x86/include/asm/signal.h] */
  83 {
  84         int ret;
  85         asm("btl %2,%1\n\tsbbl %0,%0"
  86             : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");
  87         return ret;
  88 }
  89 
  90 #define sigismember(set, sig)                   \
  91         (__builtin_constant_p(sig)              \
  92          ? __const_sigismember((set), (sig))    \
  93          : __gen_sigismember((set), (sig)))
  94 
  95 struct pt_regs;
  96 
  97 #else /* __i386__ */
  98 
  99 #undef __HAVE_ARCH_SIG_BITOPS
 100 
 101 #endif /* !__i386__ */
 102 
 103 #endif /* __ASSEMBLY__ */
 104 #endif /* _ASM_X86_SIGNAL_H */

/* [previous][next][first][last][top][bottom][index][help] [+104 arch/x86/include/asm/signal.h] */