diff options
author | Oleg Nesterov <oleg@redhat.com> | 2014-06-06 17:37:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-06 19:08:12 -0400 |
commit | b4e74264eb0b03f42097fa70a0766312156244a0 (patch) | |
tree | f681b406765648b4fb6dde9b1c672b1276937a79 /include/linux/signal.h | |
parent | 580d34e42ad621736a3c53c9c11a2152c18a4068 (diff) |
signals: introduce kernel_sigaction()
Now that allow_signal() is really trivial we can unify it with
disallow_signal(). Add the new helper, kernel_sigaction(), and
reimplement allow_signal/disallow_signal as a trivial wrappers.
This saves one EXPORT_SYMBOL() and the new helper can have more users.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Al Viro <viro@ZenIV.linux.org.uk>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/signal.h')
-rw-r--r-- | include/linux/signal.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/include/linux/signal.h b/include/linux/signal.h index ac83c593f4b9..c9e65360c49a 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h | |||
@@ -284,8 +284,22 @@ extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, | |||
284 | extern void signal_setup_done(int failed, struct ksignal *ksig, int stepping); | 284 | extern void signal_setup_done(int failed, struct ksignal *ksig, int stepping); |
285 | extern void signal_delivered(int sig, siginfo_t *info, struct k_sigaction *ka, struct pt_regs *regs, int stepping); | 285 | extern void signal_delivered(int sig, siginfo_t *info, struct k_sigaction *ka, struct pt_regs *regs, int stepping); |
286 | extern void exit_signals(struct task_struct *tsk); | 286 | extern void exit_signals(struct task_struct *tsk); |
287 | extern void allow_signal(int); | 287 | extern void kernel_sigaction(int, __sighandler_t); |
288 | extern void disallow_signal(int); | 288 | |
289 | static inline void allow_signal(int sig) | ||
290 | { | ||
291 | /* | ||
292 | * Kernel threads handle their own signals. Let the signal code | ||
293 | * know it'll be handled, so that they don't get converted to | ||
294 | * SIGKILL or just silently dropped. | ||
295 | */ | ||
296 | kernel_sigaction(sig, (__force __sighandler_t)2); | ||
297 | } | ||
298 | |||
299 | static inline void disallow_signal(int sig) | ||
300 | { | ||
301 | kernel_sigaction(sig, SIG_IGN); | ||
302 | } | ||
289 | 303 | ||
290 | /* | 304 | /* |
291 | * Eventually that'll replace get_signal_to_deliver(); macro for now, | 305 | * Eventually that'll replace get_signal_to_deliver(); macro for now, |