mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
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
23 changed files with 57 additions and 36 deletions
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
#include "qemu/guest-random.h"
|
||||
#include "semihosting/common-semi.h"
|
||||
#include "target/arm/syndrome.h"
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
void cpu_loop(CPUAlphaState *env)
|
||||
{
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "qemu.h"
|
||||
#include "elf.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
#include "semihosting/common-semi.h"
|
||||
|
||||
#define get_user_code_u32(x, gaddr, env) \
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
void cpu_loop(CPUCRISState *env)
|
||||
{
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#endif
|
||||
#include "qemu.h"
|
||||
#include "fd-trans.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
enum {
|
||||
QEMU_IFLA_BR_UNSPEC,
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
#include "internal.h"
|
||||
|
||||
void cpu_loop(CPUHexagonState *env)
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
static abi_ulong hppa_lws(CPUHPPAState *env)
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
/***********************************************************/
|
||||
/* CPUX86 core interface */
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
void cpu_loop(CPUM68KState *env)
|
||||
{
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
#include "cpu_loop-common.h"
|
||||
#include "crypto/init.h"
|
||||
#include "fd-trans.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
#ifndef AT_FLAGS_PRESERVE_ARGV0
|
||||
#define AT_FLAGS_PRESERVE_ARGV0_BIT 0
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
void cpu_loop(CPUMBState *env)
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
#include "elf.h"
|
||||
#include "internal.h"
|
||||
#include "fpu_helper.h"
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
void cpu_loop(CPUNios2State *env)
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
void cpu_loop(CPUOpenRISCState *env)
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
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 */
|
||||
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
|
||||
/* vm86.c */
|
||||
void save_v86_state(CPUX86State *env);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "qemu/error-report.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
#include "elf.h"
|
||||
#include "semihosting/common-semi.h"
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
/* s390x masks the fault address it reports in si_addr for SIGSEGV and SIGBUS */
|
||||
#define S390X_FAIL_ADDR_MASK -4096LL
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
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,
|
||||
target_siginfo_t *info,
|
||||
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
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "qemu-common.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
#define SPARC64_STACK_BIAS 2047
|
||||
|
||||
|
|
|
@ -128,6 +128,7 @@
|
|||
|
||||
#include "qemu.h"
|
||||
#include "strace.h"
|
||||
#include "signal-common.h"
|
||||
#include "qemu/guest-random.h"
|
||||
#include "qemu/selfmap.h"
|
||||
#include "user/syscall-trace.h"
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qemu.h"
|
||||
#include "cpu_loop-common.h"
|
||||
#include "signal-common.h"
|
||||
|
||||
static void xtensa_rfw(CPUXtensaState *env)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue