![Benjamin Herrenschmidt](/assets/img/avatar_default.png)
The code for creating signal frames was still duplicated and split in strange ways between 32 and 64 bits, including the SA_ONSTACK handling being in do_signal on 32 bits but inside handle_rt_signal on 64 bits etc... This moves the 64 bits get_sigframe() to the generic signal.c, cleans it a bit, moves the access_ok() call done by all callers to it as well, and adapts/cleanups the 3 different signal handling cases to use that common function. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
32 lines
1 KiB
C
32 lines
1 KiB
C
/*
|
|
* Copyright (c) 2007 Benjamin Herrenschmidt, IBM Coproration
|
|
* Extracted from signal_32.c and signal_64.c
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU General
|
|
* Public License. See the file README.legal in the main directory of
|
|
* this archive for more details.
|
|
*/
|
|
|
|
#ifndef _POWERPC_ARCH_SIGNAL_H
|
|
#define _POWERPC_ARCH_SIGNAL_H
|
|
|
|
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
|
|
|
extern void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
|
|
size_t frame_size);
|
|
extern void restore_sigmask(sigset_t *set);
|
|
|
|
extern int handle_signal32(unsigned long sig, struct k_sigaction *ka,
|
|
siginfo_t *info, sigset_t *oldset,
|
|
struct pt_regs *regs);
|
|
|
|
extern int handle_rt_signal32(unsigned long sig, struct k_sigaction *ka,
|
|
siginfo_t *info, sigset_t *oldset,
|
|
struct pt_regs *regs);
|
|
|
|
extern int handle_rt_signal64(int signr, struct k_sigaction *ka,
|
|
siginfo_t *info, sigset_t *set,
|
|
struct pt_regs *regs);
|
|
|
|
#endif /* _POWERPC_ARCH_SIGNAL_H */
|