Blame view

include/asm-x86_64/signal.h 3.81 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
  #ifndef _ASMx8664_SIGNAL_H
  #define _ASMx8664_SIGNAL_H
  
  #ifndef __ASSEMBLY__
  #include <linux/types.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
6
7
8
9
10
11
  #include <linux/time.h>
  
  /* Avoid too many header ordering problems.  */
  struct siginfo;
  
  #ifdef __KERNEL__
75da736fb   David Woodhouse   [PATCH] Fix 'make...
12
  #include <linux/linkage.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13
14
15
16
17
18
19
20
21
22
23
24
  /* Most things should be clean enough to redefine this at will, if care
     is taken to make libc match.  */
  
  #define _NSIG		64
  #define _NSIG_BPW	64
  #define _NSIG_WORDS	(_NSIG / _NSIG_BPW)
  
  typedef unsigned long old_sigset_t;		/* at least 32 bits */
  
  typedef struct {
  	unsigned long sig[_NSIG_WORDS];
  } sigset_t;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  #else
  /* Here we must cater to libcs that poke about in kernel headers.  */
  
  #define NSIG		32
  typedef unsigned long sigset_t;
  
  #endif /* __KERNEL__ */
  #endif
  
  #define SIGHUP		 1
  #define SIGINT		 2
  #define SIGQUIT		 3
  #define SIGILL		 4
  #define SIGTRAP		 5
  #define SIGABRT		 6
  #define SIGIOT		 6
  #define SIGBUS		 7
  #define SIGFPE		 8
  #define SIGKILL		 9
  #define SIGUSR1		10
  #define SIGSEGV		11
  #define SIGUSR2		12
  #define SIGPIPE		13
  #define SIGALRM		14
  #define SIGTERM		15
  #define SIGSTKFLT	16
  #define SIGCHLD		17
  #define SIGCONT		18
  #define SIGSTOP		19
  #define SIGTSTP		20
  #define SIGTTIN		21
  #define SIGTTOU		22
  #define SIGURG		23
  #define SIGXCPU		24
  #define SIGXFSZ		25
  #define SIGVTALRM	26
  #define SIGPROF		27
  #define SIGWINCH	28
  #define SIGIO		29
  #define SIGPOLL		SIGIO
  /*
  #define SIGLOST		29
  */
  #define SIGPWR		30
  #define SIGSYS		31
  #define	SIGUNUSED	31
  
  /* These should not be considered constants from userland.  */
  #define SIGRTMIN	32
  #define SIGRTMAX	_NSIG
  
  /*
   * SA_FLAGS values:
   *
   * SA_ONSTACK indicates that a registered stack_t will be used.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
   * SA_RESTART flag to get restarting signals (which were the default long ago)
   * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
   * SA_RESETHAND clears the handler when the signal is delivered.
   * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
   * SA_NODEFER prevents the current signal from being masked in the handler.
   *
   * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
   * Unix names RESETHAND and NODEFER respectively.
   */
  #define SA_NOCLDSTOP	0x00000001
  #define SA_NOCLDWAIT	0x00000002
  #define SA_SIGINFO	0x00000004
  #define SA_ONSTACK	0x08000000
  #define SA_RESTART	0x10000000
  #define SA_NODEFER	0x40000000
  #define SA_RESETHAND	0x80000000
  
  #define SA_NOMASK	SA_NODEFER
  #define SA_ONESHOT	SA_RESETHAND
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
99
100
101
102
103
104
105
106
107
108
109
  
  #define SA_RESTORER	0x04000000
  
  /*
   * sigaltstack controls
   */
  #define SS_ONSTACK	1
  #define SS_DISABLE	2
  
  #define MINSIGSTKSZ	2048
  #define SIGSTKSZ	8192
b1ecb4c3a   Al Viro   [PATCH] asm/signa...
110
  #include <asm-generic/signal.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
111
112
  
  #ifndef __ASSEMBLY__
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
  
  struct sigaction {
  	__sighandler_t sa_handler;
  	unsigned long sa_flags;
  	__sigrestore_t sa_restorer;
  	sigset_t sa_mask;		/* mask last for extensibility */
  };
  
  struct k_sigaction {
  	struct sigaction sa;
  };
  
  typedef struct sigaltstack {
  	void __user *ss_sp;
  	int ss_flags;
  	size_t ss_size;
  } stack_t;
  
  #ifdef __KERNEL__
  #include <asm/sigcontext.h>
  
  #undef __HAVE_ARCH_SIG_BITOPS
  #if 0
9c0aa0f9a   Adrian Bunk   [PATCH] Replace e...
136
  static inline void sigaddset(sigset_t *set, int _sig)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
137
138
139
  {
  	__asm__("btsq %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
  }
9c0aa0f9a   Adrian Bunk   [PATCH] Replace e...
140
  static inline void sigdelset(sigset_t *set, int _sig)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
141
142
143
  {
  	__asm__("btrq %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
  }
9c0aa0f9a   Adrian Bunk   [PATCH] Replace e...
144
  static inline int __const_sigismember(sigset_t *set, int _sig)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
145
146
147
148
  {
  	unsigned long sig = _sig - 1;
  	return 1 & (set->sig[sig / _NSIG_BPW] >> (sig & ~(_NSIG_BPW-1)));
  }
9c0aa0f9a   Adrian Bunk   [PATCH] Replace e...
149
  static inline int __gen_sigismember(sigset_t *set, int _sig)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
150
151
152
153
154
155
156
157
158
159
160
161
  {
  	int ret;
  	__asm__("btq %2,%1
  \tsbbq %0,%0"
  		: "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");
  	return ret;
  }
  
  #define sigismember(set,sig)			\
  	(__builtin_constant_p(sig) ?		\
  	 __const_sigismember((set),(sig)) :	\
  	 __gen_sigismember((set),(sig)))
9c0aa0f9a   Adrian Bunk   [PATCH] Replace e...
162
  static inline int sigfindinword(unsigned long word)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
163
164
165
166
167
168
169
170
171
172
173
174
  {
  	__asm__("bsfq %1,%0" : "=r"(word) : "rm"(word) : "cc");
  	return word;
  }
  #endif
  #endif
  
  #define ptrace_signal_deliver(regs, cookie) do { } while (0)
  
  #endif /* __KERNEL__ */
  
  #endif