mirror of
https://github.com/torvalds/linux.git
synced 2024-12-10 05:01:26 +00:00
[POWERPC] Consolidate restore_sigmask
restore_sigmask is exactly the same on 32 and 64bit, so move it to common code. Also move _BLOCKABLE to signal.h to avoid defining it multiple times. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
69d15f6b35
commit
db277e9a67
@ -13,6 +13,21 @@
|
|||||||
#include <linux/signal.h>
|
#include <linux/signal.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
|
|
||||||
|
#include "signal.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Restore the user process's signal mask
|
||||||
|
*/
|
||||||
|
void restore_sigmask(sigset_t *set)
|
||||||
|
{
|
||||||
|
sigdelsetmask(set, ~_BLOCKABLE);
|
||||||
|
spin_lock_irq(¤t->sighand->siglock);
|
||||||
|
current->blocked = *set;
|
||||||
|
recalc_sigpending();
|
||||||
|
spin_unlock_irq(¤t->sighand->siglock);
|
||||||
|
}
|
||||||
|
|
||||||
void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka,
|
void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka,
|
||||||
int has_handler)
|
int has_handler)
|
||||||
{
|
{
|
||||||
|
@ -10,6 +10,9 @@
|
|||||||
#ifndef _POWERPC_ARCH_SIGNAL_H
|
#ifndef _POWERPC_ARCH_SIGNAL_H
|
||||||
#define _POWERPC_ARCH_SIGNAL_H
|
#define _POWERPC_ARCH_SIGNAL_H
|
||||||
|
|
||||||
|
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
||||||
|
|
||||||
|
extern void restore_sigmask(sigset_t *set);
|
||||||
extern void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka,
|
extern void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka,
|
||||||
int has_handler);
|
int has_handler);
|
||||||
|
|
||||||
|
@ -55,8 +55,6 @@
|
|||||||
|
|
||||||
#undef DEBUG_SIG
|
#undef DEBUG_SIG
|
||||||
|
|
||||||
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
|
||||||
|
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
#define do_signal do_signal32
|
#define do_signal do_signal32
|
||||||
#define sys_sigsuspend compat_sys_sigsuspend
|
#define sys_sigsuspend compat_sys_sigsuspend
|
||||||
@ -697,23 +695,6 @@ int compat_sys_sigaltstack(u32 __new, u32 __old, int r5,
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_PPC64 */
|
#endif /* CONFIG_PPC64 */
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Restore the user process's signal mask
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_PPC64
|
|
||||||
extern void restore_sigmask(sigset_t *set);
|
|
||||||
#else /* CONFIG_PPC64 */
|
|
||||||
static void restore_sigmask(sigset_t *set)
|
|
||||||
{
|
|
||||||
sigdelsetmask(set, ~_BLOCKABLE);
|
|
||||||
spin_lock_irq(¤t->sighand->siglock);
|
|
||||||
current->blocked = *set;
|
|
||||||
recalc_sigpending();
|
|
||||||
spin_unlock_irq(¤t->sighand->siglock);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set up a signal frame for a "real-time" signal handler
|
* Set up a signal frame for a "real-time" signal handler
|
||||||
* (one which gets siginfo).
|
* (one which gets siginfo).
|
||||||
|
@ -38,8 +38,6 @@
|
|||||||
|
|
||||||
#define DEBUG_SIG 0
|
#define DEBUG_SIG 0
|
||||||
|
|
||||||
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
|
||||||
|
|
||||||
#define GP_REGS_SIZE min(sizeof(elf_gregset_t), sizeof(struct pt_regs))
|
#define GP_REGS_SIZE min(sizeof(elf_gregset_t), sizeof(struct pt_regs))
|
||||||
#define FP_REGS_SIZE sizeof(elf_fpregset_t)
|
#define FP_REGS_SIZE sizeof(elf_fpregset_t)
|
||||||
|
|
||||||
@ -242,19 +240,6 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Restore the user process's signal mask (also used by signal32.c)
|
|
||||||
*/
|
|
||||||
void restore_sigmask(sigset_t *set)
|
|
||||||
{
|
|
||||||
sigdelsetmask(set, ~_BLOCKABLE);
|
|
||||||
spin_lock_irq(¤t->sighand->siglock);
|
|
||||||
current->blocked = *set;
|
|
||||||
recalc_sigpending();
|
|
||||||
spin_unlock_irq(¤t->sighand->siglock);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle {get,set,swap}_context operations
|
* Handle {get,set,swap}_context operations
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user