1#ifndef _ASMx86_64_SIGNAL_H
2#define _ASMx86_64_SIGNAL_H
3
4#include <linux/types.h>
5
6
7struct siginfo;
8
9#ifdef __KERNEL__
10
11
12
13#define _NSIG 64
14#define _NSIG_BPW 64
15#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
16
17typedef unsigned long old_sigset_t;
18
19typedef struct {
20 unsigned long sig[_NSIG_WORDS];
21} sigset_t;
22
23#else
24
25
26#define NSIG 32
27typedef unsigned long sigset_t;
28
29#endif
30
31#define SIGHUP 1
32#define SIGINT 2
33#define SIGQUIT 3
34#define SIGILL 4
35#define SIGTRAP 5
36#define SIGABRT 6
37#define SIGIOT 6
38#define SIGBUS 7
39#define SIGFPE 8
40#define SIGKILL 9
41#define SIGUSR1 10
42#define SIGSEGV 11
43#define SIGUSR2 12
44#define SIGPIPE 13
45#define SIGALRM 14
46#define SIGTERM 15
47#define SIGSTKFLT 16
48#define SIGCHLD 17
49#define SIGCONT 18
50#define SIGSTOP 19
51#define SIGTSTP 20
52#define SIGTTIN 21
53#define SIGTTOU 22
54#define SIGURG 23
55#define SIGXCPU 24
56#define SIGXFSZ 25
57#define SIGVTALRM 26
58#define SIGPROF 27
59#define SIGWINCH 28
60#define SIGIO 29
61#define SIGPOLL SIGIO
62
63
64
65#define SIGPWR 30
66#define SIGSYS 31
67#define SIGUNUSED 31
68
69
70#define SIGRTMIN 32
71#define SIGRTMAX (_NSIG-1)
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87#define SA_NOCLDSTOP 0x00000001
88#define SA_NOCLDWAIT 0x00000002
89#define SA_SIGINFO 0x00000004
90#define SA_ONSTACK 0x08000000
91#define SA_RESTART 0x10000000
92#define SA_NODEFER 0x40000000
93#define SA_RESETHAND 0x80000000
94
95#define SA_NOMASK SA_NODEFER
96#define SA_ONESHOT SA_RESETHAND
97#define SA_INTERRUPT 0x20000000
98
99#define SA_RESTORER 0x04000000
100
101
102
103
104#define SS_ONSTACK 1
105#define SS_DISABLE 2
106
107#define MINSIGSTKSZ 2048
108#define SIGSTKSZ 8192
109
110#ifdef __KERNEL__
111
112
113
114
115
116
117
118
119#define SA_PROBE SA_ONESHOT
120#define SA_SAMPLE_RANDOM SA_RESTART
121#define SA_SHIRQ 0x04000000
122#endif
123
124#define SIG_BLOCK 0
125#define SIG_UNBLOCK 1
126#define SIG_SETMASK 2
127
128
129typedef void (*__sighandler_t)(int);
130
131#define SIG_DFL ((__sighandler_t)0)
132#define SIG_IGN ((__sighandler_t)1)
133#define SIG_ERR ((__sighandler_t)-1)
134
135struct sigaction {
136 __sighandler_t sa_handler;
137 unsigned long sa_flags;
138 void (*sa_restorer)(void);
139 sigset_t sa_mask;
140};
141
142struct k_sigaction {
143 struct sigaction sa;
144};
145
146typedef struct sigaltstack {
147 void *ss_sp;
148 int ss_flags;
149 size_t ss_size;
150} stack_t;
151
152#ifdef __KERNEL__
153#include <asm/sigcontext.h>
154
155#undef __HAVE_ARCH_SIG_BITOPS
156#if 0
157
158extern __inline__ void sigaddset(sigset_t *set, int _sig)
159{
160 __asm__("btsq %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
161}
162
163extern __inline__ void sigdelset(sigset_t *set, int _sig)
164{
165 __asm__("btrq %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
166}
167
168extern __inline__ int __const_sigismember(sigset_t *set, int _sig)
169{
170 unsigned long sig = _sig - 1;
171 return 1 & (set->sig[sig / _NSIG_BPW] >> (sig & ~(_NSIG_BPW-1)));
172}
173
174extern __inline__ int __gen_sigismember(sigset_t *set, int _sig)
175{
176 int ret;
177 __asm__("btq %2,%1\n\tsbbq %0,%0"
178 : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");
179 return ret;
180}
181
182#define sigismember(set,sig) \
183 (__builtin_constant_p(sig) ? \
184 __const_sigismember((set),(sig)) : \
185 __gen_sigismember((set),(sig)))
186
187#define sigmask(sig) (1UL << ((sig) - 1))
188
189extern __inline__ int sigfindinword(unsigned long word)
190{
191 __asm__("bsfq %1,%0" : "=r"(word) : "rm"(word) : "cc");
192 return word;
193}
194#endif
195#endif
196
197#endif
198