linux-user: Split signal-related prototypes into signal-common.h
Split the signal related prototypes into the existing header file signal-common.h, and include it in those places that now require it. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210908154405.15417-4-peter.maydell@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
a44d57a3b9
commit
2113aed687
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
#include "qemu/guest-random.h"
|
#include "qemu/guest-random.h"
|
||||||
#include "semihosting/common-semi.h"
|
#include "semihosting/common-semi.h"
|
||||||
#include "target/arm/syndrome.h"
|
#include "target/arm/syndrome.h"
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
void cpu_loop(CPUAlphaState *env)
|
void cpu_loop(CPUAlphaState *env)
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "elf.h"
|
#include "elf.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
#include "semihosting/common-semi.h"
|
#include "semihosting/common-semi.h"
|
||||||
|
|
||||||
#define get_user_code_u32(x, gaddr, env) \
|
#define get_user_code_u32(x, gaddr, env) \
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
void cpu_loop(CPUCRISState *env)
|
void cpu_loop(CPUCRISState *env)
|
||||||
{
|
{
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "fd-trans.h"
|
#include "fd-trans.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
QEMU_IFLA_BR_UNSPEC,
|
QEMU_IFLA_BR_UNSPEC,
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
void cpu_loop(CPUHexagonState *env)
|
void cpu_loop(CPUHexagonState *env)
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
static abi_ulong hppa_lws(CPUHPPAState *env)
|
static abi_ulong hppa_lws(CPUHPPAState *env)
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
/* CPUX86 core interface */
|
/* CPUX86 core interface */
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
void cpu_loop(CPUM68KState *env)
|
void cpu_loop(CPUM68KState *env)
|
||||||
{
|
{
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
#include "crypto/init.h"
|
#include "crypto/init.h"
|
||||||
#include "fd-trans.h"
|
#include "fd-trans.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
#ifndef AT_FLAGS_PRESERVE_ARGV0
|
#ifndef AT_FLAGS_PRESERVE_ARGV0
|
||||||
#define AT_FLAGS_PRESERVE_ARGV0_BIT 0
|
#define AT_FLAGS_PRESERVE_ARGV0_BIT 0
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
void cpu_loop(CPUMBState *env)
|
void cpu_loop(CPUMBState *env)
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
#include "elf.h"
|
#include "elf.h"
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "fpu_helper.h"
|
#include "fpu_helper.h"
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
void cpu_loop(CPUNios2State *env)
|
void cpu_loop(CPUNios2State *env)
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
void cpu_loop(CPUOpenRISCState *env)
|
void cpu_loop(CPUOpenRISCState *env)
|
||||||
{
|
{
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
static inline uint64_t cpu_ppc_get_tb(CPUPPCState *env)
|
static inline uint64_t cpu_ppc_get_tb(CPUPPCState *env)
|
||||||
{
|
{
|
||||||
|
@ -415,42 +415,6 @@ extern long safe_syscall_base(int *pending, long number, ...);
|
|||||||
/* syscall.c */
|
/* syscall.c */
|
||||||
int host_to_target_waitstatus(int status);
|
int host_to_target_waitstatus(int status);
|
||||||
|
|
||||||
/* signal.c */
|
|
||||||
void process_pending_signals(CPUArchState *cpu_env);
|
|
||||||
void signal_init(void);
|
|
||||||
int queue_signal(CPUArchState *env, int sig, int si_type,
|
|
||||||
target_siginfo_t *info);
|
|
||||||
void host_to_target_siginfo(target_siginfo_t *tinfo, const siginfo_t *info);
|
|
||||||
void target_to_host_siginfo(siginfo_t *info, const target_siginfo_t *tinfo);
|
|
||||||
int target_to_host_signal(int sig);
|
|
||||||
int host_to_target_signal(int sig);
|
|
||||||
long do_sigreturn(CPUArchState *env);
|
|
||||||
long do_rt_sigreturn(CPUArchState *env);
|
|
||||||
abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr,
|
|
||||||
CPUArchState *env);
|
|
||||||
int do_sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
|
|
||||||
abi_long do_swapcontext(CPUArchState *env, abi_ulong uold_ctx,
|
|
||||||
abi_ulong unew_ctx, abi_long ctx_size);
|
|
||||||
/**
|
|
||||||
* block_signals: block all signals while handling this guest syscall
|
|
||||||
*
|
|
||||||
* Block all signals, and arrange that the signal mask is returned to
|
|
||||||
* its correct value for the guest before we resume execution of guest code.
|
|
||||||
* If this function returns non-zero, then the caller should immediately
|
|
||||||
* return -TARGET_ERESTARTSYS to the main loop, which will take the pending
|
|
||||||
* signal and restart execution of the syscall.
|
|
||||||
* If block_signals() returns zero, then the caller can continue with
|
|
||||||
* emulation of the system call knowing that no signals can be taken
|
|
||||||
* (and therefore that no race conditions will result).
|
|
||||||
* This should only be called once, because if it is called a second time
|
|
||||||
* it will always return non-zero. (Think of it like a mutex that can't
|
|
||||||
* be recursively locked.)
|
|
||||||
* Signals will be unblocked again by process_pending_signals().
|
|
||||||
*
|
|
||||||
* Return value: non-zero if there was a pending signal, zero if not.
|
|
||||||
*/
|
|
||||||
int block_signals(void); /* Returns non zero if signal pending */
|
|
||||||
|
|
||||||
#ifdef TARGET_I386
|
#ifdef TARGET_I386
|
||||||
/* vm86.c */
|
/* vm86.c */
|
||||||
void save_v86_state(CPUX86State *env);
|
void save_v86_state(CPUX86State *env);
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
#include "elf.h"
|
#include "elf.h"
|
||||||
#include "semihosting/common-semi.h"
|
#include "semihosting/common-semi.h"
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
/* s390x masks the fault address it reports in si_addr for SIGSEGV and SIGBUS */
|
/* s390x masks the fault address it reports in si_addr for SIGSEGV and SIGBUS */
|
||||||
#define S390X_FAIL_ADDR_MASK -4096LL
|
#define S390X_FAIL_ADDR_MASK -4096LL
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
void cpu_loop(CPUSH4State *env)
|
void cpu_loop(CPUSH4State *env)
|
||||||
{
|
{
|
||||||
|
@ -47,4 +47,40 @@ void setup_frame(int sig, struct target_sigaction *ka,
|
|||||||
void setup_rt_frame(int sig, struct target_sigaction *ka,
|
void setup_rt_frame(int sig, struct target_sigaction *ka,
|
||||||
target_siginfo_t *info,
|
target_siginfo_t *info,
|
||||||
target_sigset_t *set, CPUArchState *env);
|
target_sigset_t *set, CPUArchState *env);
|
||||||
|
|
||||||
|
void process_pending_signals(CPUArchState *cpu_env);
|
||||||
|
void signal_init(void);
|
||||||
|
int queue_signal(CPUArchState *env, int sig, int si_type,
|
||||||
|
target_siginfo_t *info);
|
||||||
|
void host_to_target_siginfo(target_siginfo_t *tinfo, const siginfo_t *info);
|
||||||
|
void target_to_host_siginfo(siginfo_t *info, const target_siginfo_t *tinfo);
|
||||||
|
int target_to_host_signal(int sig);
|
||||||
|
int host_to_target_signal(int sig);
|
||||||
|
long do_sigreturn(CPUArchState *env);
|
||||||
|
long do_rt_sigreturn(CPUArchState *env);
|
||||||
|
abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr,
|
||||||
|
CPUArchState *env);
|
||||||
|
int do_sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
|
||||||
|
abi_long do_swapcontext(CPUArchState *env, abi_ulong uold_ctx,
|
||||||
|
abi_ulong unew_ctx, abi_long ctx_size);
|
||||||
|
/**
|
||||||
|
* block_signals: block all signals while handling this guest syscall
|
||||||
|
*
|
||||||
|
* Block all signals, and arrange that the signal mask is returned to
|
||||||
|
* its correct value for the guest before we resume execution of guest code.
|
||||||
|
* If this function returns non-zero, then the caller should immediately
|
||||||
|
* return -TARGET_ERESTARTSYS to the main loop, which will take the pending
|
||||||
|
* signal and restart execution of the syscall.
|
||||||
|
* If block_signals() returns zero, then the caller can continue with
|
||||||
|
* emulation of the system call knowing that no signals can be taken
|
||||||
|
* (and therefore that no race conditions will result).
|
||||||
|
* This should only be called once, because if it is called a second time
|
||||||
|
* it will always return non-zero. (Think of it like a mutex that can't
|
||||||
|
* be recursively locked.)
|
||||||
|
* Signals will be unblocked again by process_pending_signals().
|
||||||
|
*
|
||||||
|
* Return value: non-zero if there was a pending signal, zero if not.
|
||||||
|
*/
|
||||||
|
int block_signals(void); /* Returns non zero if signal pending */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
#define SPARC64_STACK_BIAS 2047
|
#define SPARC64_STACK_BIAS 2047
|
||||||
|
|
||||||
|
@ -128,6 +128,7 @@
|
|||||||
|
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "strace.h"
|
#include "strace.h"
|
||||||
|
#include "signal-common.h"
|
||||||
#include "qemu/guest-random.h"
|
#include "qemu/guest-random.h"
|
||||||
#include "qemu/selfmap.h"
|
#include "qemu/selfmap.h"
|
||||||
#include "user/syscall-trace.h"
|
#include "user/syscall-trace.h"
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "cpu_loop-common.h"
|
#include "cpu_loop-common.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
static void xtensa_rfw(CPUXtensaState *env)
|
static void xtensa_rfw(CPUXtensaState *env)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user