···000000000001#ifdef __KERNEL__2-# ifdef CONFIG_X86_323-# include "signal_32.h"4-# else5-# include "signal_64.h"6-# endif00007#else8-# ifdef __i386__9-# include "signal_32.h"10-# else11-# include "signal_64.h"12-# endif000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013#endif
···1+#ifndef _ASM_X86_SIGNAL_H2+#define _ASM_X86_SIGNAL_H3+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 care16+ is taken to make libc match. */17+18+#define _NSIG 6419+20+#ifdef __i386__21+# define _NSIG_BPW 3222#else23+# define _NSIG_BPW 6424+#endif25+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+#else35+/* Here we must cater to libcs that poke about in kernel headers. */36+37+#define NSIG 3238+typedef unsigned long sigset_t;39+40+#endif /* __KERNEL__ */41+#endif /* __ASSEMBLY__ */42+43+#define SIGHUP 144+#define SIGINT 245+#define SIGQUIT 346+#define SIGILL 447+#define SIGTRAP 548+#define SIGABRT 649+#define SIGIOT 650+#define SIGBUS 751+#define SIGFPE 852+#define SIGKILL 953+#define SIGUSR1 1054+#define SIGSEGV 1155+#define SIGUSR2 1256+#define SIGPIPE 1357+#define SIGALRM 1458+#define SIGTERM 1559+#define SIGSTKFLT 1660+#define SIGCHLD 1761+#define SIGCONT 1862+#define SIGSTOP 1963+#define SIGTSTP 2064+#define SIGTTIN 2165+#define SIGTTOU 2266+#define SIGURG 2367+#define SIGXCPU 2468+#define SIGXFSZ 2569+#define SIGVTALRM 2670+#define SIGPROF 2771+#define SIGWINCH 2872+#define SIGIO 2973+#define SIGPOLL SIGIO74+/*75+#define SIGLOST 2976+*/77+#define SIGPWR 3078+#define SIGSYS 3179+#define SIGUNUSED 3180+81+/* These should not be considered constants from userland. */82+#define SIGRTMIN 3283+#define SIGRTMAX _NSIG84+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 Single96+ * Unix names RESETHAND and NODEFER respectively.97+ */98+#define SA_NOCLDSTOP 0x00000001u99+#define SA_NOCLDWAIT 0x00000002u100+#define SA_SIGINFO 0x00000004u101+#define SA_ONSTACK 0x08000000u102+#define SA_RESTART 0x10000000u103+#define SA_NODEFER 0x40000000u104+#define SA_RESETHAND 0x80000000u105+106+#define SA_NOMASK SA_NODEFER107+#define SA_ONESHOT SA_RESETHAND108+109+#define SA_RESTORER 0x04000000110+111+/*112+ * sigaltstack controls113+ */114+#define SS_ONSTACK 1115+#define SS_DISABLE 2116+117+#define MINSIGSTKSZ 2048118+#define SIGSTKSZ 8192119+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+# else /* __KERNEL__ */144+/* Here we must cater to libcs that poke about in kernel headers. */145+146+struct sigaction {147+ union {148+ __sighandler_t _sa_handler;149+ void (*_sa_sigaction)(int, struct siginfo *, void *);150+ } _u;151+ sigset_t sa_mask;152+ unsigned long sa_flags;153+ void (*sa_restorer)(void);154+};155+156+#define sa_handler _u._sa_handler157+#define sa_sigaction _u._sa_sigaction158+159+# endif /* ! __KERNEL__ */160+#else /* __i386__ */161+162+struct sigaction {163+ __sighandler_t sa_handler;164+ unsigned long sa_flags;165+ __sigrestore_t sa_restorer;166+ sigset_t sa_mask; /* mask last for extensibility */167+};168+169+struct k_sigaction {170+ struct sigaction sa;171+};172+173+#endif /* !__i386__ */174+175+typedef struct sigaltstack {176+ void __user *ss_sp;177+ int ss_flags;178+ size_t ss_size;179+} stack_t;180+181+#ifdef __KERNEL__182+#include <asm/sigcontext.h>183+184+#ifdef __386__185+186+#define __HAVE_ARCH_SIG_BITOPS187+188+#define sigaddset(set,sig) \189+ (__builtin_constantp(sig) ? \190+ __const_sigaddset((set),(sig)) : \191+ __gen_sigaddset((set),(sig)))192+193+static __inline__ void __gen_sigaddset(sigset_t *set, int _sig)194+{195+ __asm__("btsl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");196+}197+198+static __inline__ void __const_sigaddset(sigset_t *set, int _sig)199+{200+ unsigned long sig = _sig - 1;201+ set->sig[sig / _NSIG_BPW] |= 1 << (sig % _NSIG_BPW);202+}203+204+#define sigdelset(set,sig) \205+ (__builtin_constant_p(sig) ? \206+ __const_sigdelset((set),(sig)) : \207+ __gen_sigdelset((set),(sig)))208+209+210+static __inline__ void __gen_sigdelset(sigset_t *set, int _sig)211+{212+ __asm__("btrl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");213+}214+215+static __inline__ void __const_sigdelset(sigset_t *set, int _sig)216+{217+ unsigned long sig = _sig - 1;218+ set->sig[sig / _NSIG_BPW] &= ~(1 << (sig % _NSIG_BPW));219+}220+221+static __inline__ int __const_sigismember(sigset_t *set, int _sig)222+{223+ unsigned long sig = _sig - 1;224+ return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));225+}226+227+static __inline__ int __gen_sigismember(sigset_t *set, int _sig)228+{229+ int ret;230+ __asm__("btl %2,%1\n\tsbbl %0,%0"231+ : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");232+ return ret;233+}234+235+#define sigismember(set,sig) \236+ (__builtin_constant_p(sig) ? \237+ __const_sigismember((set),(sig)) : \238+ __gen_sigismember((set),(sig)))239+240+static __inline__ int sigfindinword(unsigned long word)241+{242+ __asm__("bsfl %1,%0" : "=r"(word) : "rm"(word) : "cc");243+ return word;244+}245+246+struct pt_regs;247+248+#define ptrace_signal_deliver(regs, cookie) \249+ do { \250+ if (current->ptrace & PT_DTRACE) { \251+ current->ptrace &= ~PT_DTRACE; \252+ (regs)->eflags &= ~TF_MASK; \253+ } \254+ } while (0)255+256+#else /* __i386__ */257+258+#undef __HAVE_ARCH_SIG_BITOPS259+260+#define ptrace_signal_deliver(regs, cookie) do { } while (0)261+262+#endif /* !__i386__ */263+#endif /* __KERNEL__ */264+#endif /* __ASSEMBLY__ */265+266#endif
-232
include/asm-x86/signal_32.h
···1-#ifndef _ASMi386_SIGNAL_H2-#define _ASMi386_SIGNAL_H3-4-#include <linux/types.h>5-#include <linux/time.h>6-#include <linux/compiler.h>7-8-/* Avoid too many header ordering problems. */9-struct siginfo;10-11-#ifdef __KERNEL__12-13-#include <linux/linkage.h>14-15-/* Most things should be clean enough to redefine this at will, if care16- is taken to make libc match. */17-18-#define _NSIG 6419-#define _NSIG_BPW 3220-#define _NSIG_WORDS (_NSIG / _NSIG_BPW)21-22-typedef unsigned long old_sigset_t; /* at least 32 bits */23-24-typedef struct {25- unsigned long sig[_NSIG_WORDS];26-} sigset_t;27-28-#else29-/* Here we must cater to libcs that poke about in kernel headers. */30-31-#define NSIG 3232-typedef unsigned long sigset_t;33-34-#endif /* __KERNEL__ */35-36-#define SIGHUP 137-#define SIGINT 238-#define SIGQUIT 339-#define SIGILL 440-#define SIGTRAP 541-#define SIGABRT 642-#define SIGIOT 643-#define SIGBUS 744-#define SIGFPE 845-#define SIGKILL 946-#define SIGUSR1 1047-#define SIGSEGV 1148-#define SIGUSR2 1249-#define SIGPIPE 1350-#define SIGALRM 1451-#define SIGTERM 1552-#define SIGSTKFLT 1653-#define SIGCHLD 1754-#define SIGCONT 1855-#define SIGSTOP 1956-#define SIGTSTP 2057-#define SIGTTIN 2158-#define SIGTTOU 2259-#define SIGURG 2360-#define SIGXCPU 2461-#define SIGXFSZ 2562-#define SIGVTALRM 2663-#define SIGPROF 2764-#define SIGWINCH 2865-#define SIGIO 2966-#define SIGPOLL SIGIO67-/*68-#define SIGLOST 2969-*/70-#define SIGPWR 3071-#define SIGSYS 3172-#define SIGUNUSED 3173-74-/* These should not be considered constants from userland. */75-#define SIGRTMIN 3276-#define SIGRTMAX _NSIG77-78-/*79- * SA_FLAGS values:80- *81- * SA_ONSTACK indicates that a registered stack_t will be used.82- * SA_RESTART flag to get restarting signals (which were the default long ago)83- * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.84- * SA_RESETHAND clears the handler when the signal is delivered.85- * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.86- * SA_NODEFER prevents the current signal from being masked in the handler.87- *88- * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single89- * Unix names RESETHAND and NODEFER respectively.90- */91-#define SA_NOCLDSTOP 0x00000001u92-#define SA_NOCLDWAIT 0x00000002u93-#define SA_SIGINFO 0x00000004u94-#define SA_ONSTACK 0x08000000u95-#define SA_RESTART 0x10000000u96-#define SA_NODEFER 0x40000000u97-#define SA_RESETHAND 0x80000000u98-99-#define SA_NOMASK SA_NODEFER100-#define SA_ONESHOT SA_RESETHAND101-102-#define SA_RESTORER 0x04000000103-104-/* 105- * sigaltstack controls106- */107-#define SS_ONSTACK 1108-#define SS_DISABLE 2109-110-#define MINSIGSTKSZ 2048111-#define SIGSTKSZ 8192112-113-#include <asm-generic/signal.h>114-115-#ifdef __KERNEL__116-struct old_sigaction {117- __sighandler_t sa_handler;118- old_sigset_t sa_mask;119- unsigned long sa_flags;120- __sigrestore_t sa_restorer;121-};122-123-struct sigaction {124- __sighandler_t sa_handler;125- unsigned long sa_flags;126- __sigrestore_t sa_restorer;127- sigset_t sa_mask; /* mask last for extensibility */128-};129-130-struct k_sigaction {131- struct sigaction sa;132-};133-#else134-/* Here we must cater to libcs that poke about in kernel headers. */135-136-struct sigaction {137- union {138- __sighandler_t _sa_handler;139- void (*_sa_sigaction)(int, struct siginfo *, void *);140- } _u;141- sigset_t sa_mask;142- unsigned long sa_flags;143- void (*sa_restorer)(void);144-};145-146-#define sa_handler _u._sa_handler147-#define sa_sigaction _u._sa_sigaction148-149-#endif /* __KERNEL__ */150-151-typedef struct sigaltstack {152- void __user *ss_sp;153- int ss_flags;154- size_t ss_size;155-} stack_t;156-157-#ifdef __KERNEL__158-#include <asm/sigcontext.h>159-160-#define __HAVE_ARCH_SIG_BITOPS161-162-#define sigaddset(set,sig) \163- (__builtin_constant_p(sig) ? \164- __const_sigaddset((set),(sig)) : \165- __gen_sigaddset((set),(sig)))166-167-static __inline__ void __gen_sigaddset(sigset_t *set, int _sig)168-{169- __asm__("btsl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");170-}171-172-static __inline__ void __const_sigaddset(sigset_t *set, int _sig)173-{174- unsigned long sig = _sig - 1;175- set->sig[sig / _NSIG_BPW] |= 1 << (sig % _NSIG_BPW);176-}177-178-#define sigdelset(set,sig) \179- (__builtin_constant_p(sig) ? \180- __const_sigdelset((set),(sig)) : \181- __gen_sigdelset((set),(sig)))182-183-184-static __inline__ void __gen_sigdelset(sigset_t *set, int _sig)185-{186- __asm__("btrl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");187-}188-189-static __inline__ void __const_sigdelset(sigset_t *set, int _sig)190-{191- unsigned long sig = _sig - 1;192- set->sig[sig / _NSIG_BPW] &= ~(1 << (sig % _NSIG_BPW));193-}194-195-static __inline__ int __const_sigismember(sigset_t *set, int _sig)196-{197- unsigned long sig = _sig - 1;198- return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));199-}200-201-static __inline__ int __gen_sigismember(sigset_t *set, int _sig)202-{203- int ret;204- __asm__("btl %2,%1\n\tsbbl %0,%0"205- : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");206- return ret;207-}208-209-#define sigismember(set,sig) \210- (__builtin_constant_p(sig) ? \211- __const_sigismember((set),(sig)) : \212- __gen_sigismember((set),(sig)))213-214-static __inline__ int sigfindinword(unsigned long word)215-{216- __asm__("bsfl %1,%0" : "=r"(word) : "rm"(word) : "cc");217- return word;218-}219-220-struct pt_regs;221-222-#define ptrace_signal_deliver(regs, cookie) \223- do { \224- if (current->ptrace & PT_DTRACE) { \225- current->ptrace &= ~PT_DTRACE; \226- (regs)->eflags &= ~TF_MASK; \227- } \228- } while (0)229-230-#endif /* __KERNEL__ */231-232-#endif