~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/m68k/include/asm/signal.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _M68K_SIGNAL_H
 
2
#define _M68K_SIGNAL_H
 
3
 
 
4
#include <linux/types.h>
 
5
 
 
6
/* Avoid too many header ordering problems.  */
 
7
struct siginfo;
 
8
 
 
9
#ifdef __KERNEL__
 
10
/* Most things should be clean enough to redefine this at will, if care
 
11
   is taken to make libc match.  */
 
12
 
 
13
#define _NSIG           64
 
14
#define _NSIG_BPW       32
 
15
#define _NSIG_WORDS     (_NSIG / _NSIG_BPW)
 
16
 
 
17
typedef unsigned long old_sigset_t;             /* at least 32 bits */
 
18
 
 
19
typedef struct {
 
20
        unsigned long sig[_NSIG_WORDS];
 
21
} sigset_t;
 
22
 
 
23
#else
 
24
/* Here we must cater to libcs that poke about in kernel headers.  */
 
25
 
 
26
#define NSIG            32
 
27
typedef unsigned long sigset_t;
 
28
 
 
29
#endif /* __KERNEL__ */
 
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
#define SIGLOST         29
 
64
*/
 
65
#define SIGPWR          30
 
66
#define SIGSYS          31
 
67
#define SIGUNUSED       31
 
68
 
 
69
/* These should not be considered constants from userland.  */
 
70
#define SIGRTMIN        32
 
71
#define SIGRTMAX        _NSIG
 
72
 
 
73
/*
 
74
 * SA_FLAGS values:
 
75
 *
 
76
 * SA_ONSTACK indicates that a registered stack_t will be used.
 
77
 * SA_RESTART flag to get restarting signals (which were the default long ago)
 
78
 * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
 
79
 * SA_RESETHAND clears the handler when the signal is delivered.
 
80
 * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
 
81
 * SA_NODEFER prevents the current signal from being masked in the handler.
 
82
 *
 
83
 * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
 
84
 * Unix names RESETHAND and NODEFER respectively.
 
85
 */
 
86
#define SA_NOCLDSTOP    0x00000001
 
87
#define SA_NOCLDWAIT    0x00000002
 
88
#define SA_SIGINFO      0x00000004
 
89
#define SA_ONSTACK      0x08000000
 
90
#define SA_RESTART      0x10000000
 
91
#define SA_NODEFER      0x40000000
 
92
#define SA_RESETHAND    0x80000000
 
93
 
 
94
#define SA_NOMASK       SA_NODEFER
 
95
#define SA_ONESHOT      SA_RESETHAND
 
96
 
 
97
/*
 
98
 * sigaltstack controls
 
99
 */
 
100
#define SS_ONSTACK      1
 
101
#define SS_DISABLE      2
 
102
 
 
103
#define MINSIGSTKSZ     2048
 
104
#define SIGSTKSZ        8192
 
105
 
 
106
#include <asm-generic/signal-defs.h>
 
107
 
 
108
#ifdef __KERNEL__
 
109
struct old_sigaction {
 
110
        __sighandler_t sa_handler;
 
111
        old_sigset_t sa_mask;
 
112
        unsigned long sa_flags;
 
113
        __sigrestore_t sa_restorer;
 
114
};
 
115
 
 
116
struct sigaction {
 
117
        __sighandler_t sa_handler;
 
118
        unsigned long sa_flags;
 
119
        __sigrestore_t sa_restorer;
 
120
        sigset_t sa_mask;               /* mask last for extensibility */
 
121
};
 
122
 
 
123
struct k_sigaction {
 
124
        struct sigaction sa;
 
125
};
 
126
#else
 
127
/* Here we must cater to libcs that poke about in kernel headers.  */
 
128
 
 
129
struct sigaction {
 
130
        union {
 
131
          __sighandler_t _sa_handler;
 
132
          void (*_sa_sigaction)(int, struct siginfo *, void *);
 
133
        } _u;
 
134
        sigset_t sa_mask;
 
135
        unsigned long sa_flags;
 
136
        void (*sa_restorer)(void);
 
137
};
 
138
 
 
139
#define sa_handler      _u._sa_handler
 
140
#define sa_sigaction    _u._sa_sigaction
 
141
 
 
142
#endif /* __KERNEL__ */
 
143
 
 
144
typedef struct sigaltstack {
 
145
        void __user *ss_sp;
 
146
        int ss_flags;
 
147
        size_t ss_size;
 
148
} stack_t;
 
149
 
 
150
#ifdef __KERNEL__
 
151
#include <asm/sigcontext.h>
 
152
 
 
153
#ifndef CONFIG_CPU_HAS_NO_BITFIELDS
 
154
#define __HAVE_ARCH_SIG_BITOPS
 
155
 
 
156
static inline void sigaddset(sigset_t *set, int _sig)
 
157
{
 
158
        asm ("bfset %0{%1,#1}"
 
159
                : "+od" (*set)
 
160
                : "id" ((_sig - 1) ^ 31)
 
161
                : "cc");
 
162
}
 
163
 
 
164
static inline void sigdelset(sigset_t *set, int _sig)
 
165
{
 
166
        asm ("bfclr %0{%1,#1}"
 
167
                : "+od" (*set)
 
168
                : "id" ((_sig - 1) ^ 31)
 
169
                : "cc");
 
170
}
 
171
 
 
172
static inline int __const_sigismember(sigset_t *set, int _sig)
 
173
{
 
174
        unsigned long sig = _sig - 1;
 
175
        return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
 
176
}
 
177
 
 
178
static inline int __gen_sigismember(sigset_t *set, int _sig)
 
179
{
 
180
        int ret;
 
181
        asm ("bfextu %1{%2,#1},%0"
 
182
                : "=d" (ret)
 
183
                : "od" (*set), "id" ((_sig-1) ^ 31)
 
184
                : "cc");
 
185
        return ret;
 
186
}
 
187
 
 
188
#define sigismember(set,sig)                    \
 
189
        (__builtin_constant_p(sig) ?            \
 
190
         __const_sigismember(set,sig) :         \
 
191
         __gen_sigismember(set,sig))
 
192
 
 
193
static inline int sigfindinword(unsigned long word)
 
194
{
 
195
        asm ("bfffo %1{#0,#0},%0"
 
196
                : "=d" (word)
 
197
                : "d" (word & -word)
 
198
                : "cc");
 
199
        return word ^ 31;
 
200
}
 
201
 
 
202
#endif /* !CONFIG_CPU_HAS_NO_BITFIELDS */
 
203
 
 
204
#ifdef __uClinux__
 
205
#define ptrace_signal_deliver(regs, cookie) do { } while (0)
 
206
#else
 
207
struct pt_regs;
 
208
extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie);
 
209
#endif /* __uClinux__ */
 
210
 
 
211
#endif /* __KERNEL__ */
 
212
#endif /* _M68K_SIGNAL_H */