Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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 # 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_handler
157 #define sa_sigaction    _u._sa_sigaction
158 
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_BITOPS
187 
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 #else /* __i386__ */
249 
250 #undef __HAVE_ARCH_SIG_BITOPS
251 
252 #endif /* !__i386__ */
253 
254 #define ptrace_signal_deliver(regs, cookie) do { } while (0)
255 
256 #endif /* __KERNEL__ */
257 #endif /* __ASSEMBLY__ */
258 
259 #endif
260 
  This page was automatically generated by the LXR engine.