Skip to content

Commit

Permalink
linux-user: Rename TARGET_ERESTARTSYS to QEMU_ERESTARTSYS
Browse files Browse the repository at this point in the history
This value is fully internal to qemu, and so is not a TARGET define.
We use this as an extra marker for both host and target errno.

Reviewed-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
  • Loading branch information
rth7680 committed Dec 20, 2021
1 parent 0a7e019 commit af254a2
Show file tree
Hide file tree
Showing 31 changed files with 45 additions and 46 deletions.
2 changes: 1 addition & 1 deletion linux-user/aarch64/cpu_loop.c
Expand Up @@ -99,7 +99,7 @@ void cpu_loop(CPUARMState *env)
env->xregs[4],
env->xregs[5],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->pc -= 4;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->xregs[0] = ret;
Expand Down
2 changes: 1 addition & 1 deletion linux-user/alpha/cpu_loop.c
Expand Up @@ -98,7 +98,7 @@ void cpu_loop(CPUAlphaState *env)
env->ir[IR_A2], env->ir[IR_A3],
env->ir[IR_A4], env->ir[IR_A5],
0, 0);
if (sysret == -TARGET_ERESTARTSYS) {
if (sysret == -QEMU_ERESTARTSYS) {
env->pc -= 4;
break;
}
Expand Down
2 changes: 1 addition & 1 deletion linux-user/arm/cpu_loop.c
Expand Up @@ -407,7 +407,7 @@ void cpu_loop(CPUARMState *env)
env->regs[4],
env->regs[5],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->regs[15] -= env->thumb ? 2 : 4;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->regs[0] = ret;
Expand Down
2 changes: 1 addition & 1 deletion linux-user/cris/cpu_loop.c
Expand Up @@ -50,7 +50,7 @@ void cpu_loop(CPUCRISState *env)
env->pregs[7],
env->pregs[11],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->pc -= 2;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->regs[10] = ret;
Expand Down
2 changes: 1 addition & 1 deletion linux-user/generic/target_errno_defs.h
Expand Up @@ -153,7 +153,7 @@
* after handling any pending signals. They match with the ones the guest
* kernel uses for the same purpose.
*/
#define TARGET_ERESTARTSYS 512 /* Restart system call (if SA_RESTART) */
#define QEMU_ERESTARTSYS 512 /* Restart system call (if SA_RESTART) */

/* QEMU internal, not visible to the guest. This is returned by the
* do_sigreturn() code after a successful sigreturn syscall, to indicate
Expand Down
2 changes: 1 addition & 1 deletion linux-user/hexagon/cpu_loop.c
Expand Up @@ -55,7 +55,7 @@ void cpu_loop(CPUHexagonState *env)
env->gpr[4],
env->gpr[5],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->gpr[HEX_REG_PC] -= 4;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->gpr[0] = ret;
Expand Down
3 changes: 1 addition & 2 deletions linux-user/host/aarch64/safe-syscall.inc.S
Expand Up @@ -70,8 +70,7 @@ safe_syscall_end:
b safe_syscall_set_errno_tail

/* code path when we didn't execute the syscall */
2: mov w0, #TARGET_ERESTARTSYS
2: mov w0, #QEMU_ERESTARTSYS
b safe_syscall_set_errno_tail

.cfi_endproc
.size safe_syscall_base, .-safe_syscall_base
2 changes: 1 addition & 1 deletion linux-user/host/arm/safe-syscall.inc.S
Expand Up @@ -81,7 +81,7 @@ safe_syscall_end:
pop { r4, r5, r6, r7, r8, pc }

/* code path when we didn't execute the syscall */
2: mov r0, #TARGET_ERESTARTSYS
2: mov r0, #QEMU_ERESTARTSYS

/* code path setting errno */
1: pop { r4, r5, r6, r7, r8, lr }
Expand Down
2 changes: 1 addition & 1 deletion linux-user/host/i386/safe-syscall.inc.S
Expand Up @@ -94,7 +94,7 @@ safe_syscall_end:
jmp 1f

/* code path when we didn't execute the syscall */
2: mov $TARGET_ERESTARTSYS, %eax
2: mov $QEMU_ERESTARTSYS, %eax

/* code path setting errno */
1: pop %ebx
Expand Down
2 changes: 1 addition & 1 deletion linux-user/host/mips/safe-syscall.inc.S
Expand Up @@ -127,7 +127,7 @@ safe_syscall_end:
PTR_ADDIU sp, sp, FRAME
.cfi_adjust_cfa_offset -FRAME
.cfi_restore s0
li v0, TARGET_ERESTARTSYS
li v0, QEMU_ERESTARTSYS

/* code path setting errno */
/*
Expand Down
2 changes: 1 addition & 1 deletion linux-user/host/ppc64/safe-syscall.inc.S
Expand Up @@ -78,7 +78,7 @@ safe_syscall_end:

/* code path when we didn't execute the syscall */
2: ld 14, 16(1) /* restore r14 */
addi 3, 0, TARGET_ERESTARTSYS
addi 3, 0, QEMU_ERESTARTSYS

/* code path setting errno */
1: b safe_syscall_set_errno_tail
Expand Down
2 changes: 1 addition & 1 deletion linux-user/host/riscv/safe-syscall.inc.S
Expand Up @@ -72,7 +72,7 @@ safe_syscall_end:
j safe_syscall_set_errno_tail

/* code path when we didn't execute the syscall */
2: li a0, TARGET_ERESTARTSYS
2: li a0, QEMU_ERESTARTSYS
j safe_syscall_set_errno_tail

.cfi_endproc
Expand Down
2 changes: 1 addition & 1 deletion linux-user/host/s390x/safe-syscall.inc.S
Expand Up @@ -91,7 +91,7 @@ safe_syscall_end:
2: lg %r15,0(%r15) /* load back chain */
.cfi_adjust_cfa_offset -160
lmg %r6,%r15,48(%r15) /* load saved registers */
lghi %r2, TARGET_ERESTARTSYS
lghi %r2, QEMU_ERESTARTSYS
jg safe_syscall_set_errno_tail

.cfi_endproc
Expand Down
2 changes: 1 addition & 1 deletion linux-user/host/sparc64/safe-syscall.inc.S
Expand Up @@ -78,7 +78,7 @@ safe_syscall_end:
nop

/* code path when we didn't execute the syscall */
2: set TARGET_ERESTARTSYS, %o0
2: set QEMU_ERESTARTSYS, %o0

/* code path setting errno */
1: mov %o7, %g1
Expand Down
2 changes: 1 addition & 1 deletion linux-user/host/x86_64/safe-syscall.inc.S
Expand Up @@ -82,7 +82,7 @@ safe_syscall_end:
jmp 1f

/* code path when we didn't execute the syscall */
2: mov $TARGET_ERESTARTSYS, %eax
2: mov $QEMU_ERESTARTSYS, %eax

/* code path setting errno */
1: pop %rbp
Expand Down
2 changes: 1 addition & 1 deletion linux-user/hppa/cpu_loop.c
Expand Up @@ -133,7 +133,7 @@ void cpu_loop(CPUHPPAState *env)
env->iaoq_f = env->gr[31];
env->iaoq_b = env->gr[31] + 4;
break;
case -TARGET_ERESTARTSYS:
case -QEMU_ERESTARTSYS:
case -TARGET_QEMU_ESIGRETURN:
break;
}
Expand Down
6 changes: 3 additions & 3 deletions linux-user/i386/cpu_loop.c
Expand Up @@ -180,7 +180,7 @@ static void emulate_vsyscall(CPUX86State *env)
ret = do_syscall(env, syscall, env->regs[R_EDI], env->regs[R_ESI],
env->regs[R_EDX], env->regs[10], env->regs[8],
env->regs[9], 0, 0);
g_assert(ret != -TARGET_ERESTARTSYS);
g_assert(ret != -QEMU_ERESTARTSYS);
g_assert(ret != -TARGET_QEMU_ESIGRETURN);
if (ret == -TARGET_EFAULT) {
goto sigsegv;
Expand Down Expand Up @@ -223,7 +223,7 @@ void cpu_loop(CPUX86State *env)
env->regs[R_EDI],
env->regs[R_EBP],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->eip -= 2;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->regs[R_EAX] = ret;
Expand All @@ -241,7 +241,7 @@ void cpu_loop(CPUX86State *env)
env->regs[8],
env->regs[9],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->eip -= 2;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->regs[R_EAX] = ret;
Expand Down
2 changes: 1 addition & 1 deletion linux-user/m68k/cpu_loop.c
Expand Up @@ -80,7 +80,7 @@ void cpu_loop(CPUM68KState *env)
env->dregs[5],
env->aregs[0],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->pc -= 2;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->dregs[0] = ret;
Expand Down
2 changes: 1 addition & 1 deletion linux-user/microblaze/cpu_loop.c
Expand Up @@ -53,7 +53,7 @@ void cpu_loop(CPUMBState *env)
env->regs[9],
env->regs[10],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
/* Wind back to before the syscall. */
env->pc -= 4;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
Expand Down
2 changes: 1 addition & 1 deletion linux-user/mips/cpu_loop.c
Expand Up @@ -141,7 +141,7 @@ void cpu_loop(CPUMIPSState *env)
env->active_tc.gpr[8], env->active_tc.gpr[9],
env->active_tc.gpr[10], env->active_tc.gpr[11]);
# endif /* O32 */
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->active_tc.PC -= 4;
break;
}
Expand Down
2 changes: 1 addition & 1 deletion linux-user/openrisc/cpu_loop.c
Expand Up @@ -48,7 +48,7 @@ void cpu_loop(CPUOpenRISCState *env)
cpu_get_gpr(env, 6),
cpu_get_gpr(env, 7),
cpu_get_gpr(env, 8), 0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->pc -= 4;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
cpu_set_gpr(env, 11, ret);
Expand Down
2 changes: 1 addition & 1 deletion linux-user/ppc/cpu_loop.c
Expand Up @@ -428,7 +428,7 @@ void cpu_loop(CPUPPCState *env)
ret = do_syscall(env, env->gpr[0], env->gpr[3], env->gpr[4],
env->gpr[5], env->gpr[6], env->gpr[7],
env->gpr[8], 0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->nip -= 4;
break;
}
Expand Down
2 changes: 1 addition & 1 deletion linux-user/riscv/cpu_loop.c
Expand Up @@ -69,7 +69,7 @@ void cpu_loop(CPURISCVState *env)
env->gpr[xA5],
0, 0);
}
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->pc -= 4;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->gpr[xA0] = ret;
Expand Down
2 changes: 1 addition & 1 deletion linux-user/s390x/cpu_loop.c
Expand Up @@ -83,7 +83,7 @@ void cpu_loop(CPUS390XState *env)
ret = do_syscall(env, n, env->regs[2], env->regs[3],
env->regs[4], env->regs[5],
env->regs[6], env->regs[7], 0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->psw.addr -= env->int_svc_ilen;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->regs[2] = ret;
Expand Down
8 changes: 4 additions & 4 deletions linux-user/safe-syscall.h
Expand Up @@ -25,10 +25,10 @@
*
* Call a system call if guest signal not pending.
* This has the same API as the libc syscall() function, except that it
* may return -1 with errno == TARGET_ERESTARTSYS if a signal was pending.
* may return -1 with errno == QEMU_ERESTARTSYS if a signal was pending.
*
* Returns: the system call result, or -1 with an error code in errno
* (Errnos are host errnos; we rely on TARGET_ERESTARTSYS not clashing
* (Errnos are host errnos; we rely on QEMU_ERESTARTSYS not clashing
* with any of the host errno values.)
*/

Expand Down Expand Up @@ -81,7 +81,7 @@
* which are only technically blocking (ie which we know in practice won't
* stay in the host kernel indefinitely) it's OK to use libc if necessary.
* You must be able to cope with backing out correctly if some safe_syscall
* you make in the implementation returns either -TARGET_ERESTARTSYS or
* you make in the implementation returns either -QEMU_ERESTARTSYS or
* EINTR though.)
*
* block_signals() cannot be used for interruptible syscalls.
Expand All @@ -94,7 +94,7 @@
* handler checks the interrupted host PC against the addresse of that
* known section. If the PC is before or at the address of the syscall
* instruction then we change the PC to point at a "return
* -TARGET_ERESTARTSYS" code path instead, and then exit the signal handler
* -QEMU_ERESTARTSYS" code path instead, and then exit the signal handler
* (causing the safe_syscall() call to immediately return that value).
* Then in the main.c loop if we see this magic return value we adjust
* the guest PC to wind it back to before the system call, and invoke
Expand Down
2 changes: 1 addition & 1 deletion linux-user/sh4/cpu_loop.c
Expand Up @@ -50,7 +50,7 @@ void cpu_loop(CPUSH4State *env)
env->gregs[0],
env->gregs[1],
0, 0);
if (ret == -TARGET_ERESTARTSYS) {
if (ret == -QEMU_ERESTARTSYS) {
env->pc -= 2;
} else if (ret != -TARGET_QEMU_ESIGRETURN) {
env->gregs[0] = ret;
Expand Down
2 changes: 1 addition & 1 deletion linux-user/signal-common.h
Expand Up @@ -76,7 +76,7 @@ abi_long do_swapcontext(CPUArchState *env, abi_ulong uold_ctx,
* 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
* return -QEMU_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
Expand Down
6 changes: 3 additions & 3 deletions linux-user/signal.c
Expand Up @@ -213,7 +213,7 @@ int block_signals(void)

/* Wrapper for sigprocmask function
* Emulates a sigprocmask in a safe way for the guest. Note that set and oldset
* are host signal set, not guest ones. Returns -TARGET_ERESTARTSYS if
* are host signal set, not guest ones. Returns -QEMU_ERESTARTSYS if
* a signal was already pending and the syscall must be restarted, or
* 0 on success.
* If set is NULL, this is guaranteed not to fail.
Expand All @@ -230,7 +230,7 @@ int do_sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
int i;

if (block_signals()) {
return -TARGET_ERESTARTSYS;
return -QEMU_ERESTARTSYS;
}

switch (how) {
Expand Down Expand Up @@ -985,7 +985,7 @@ int do_sigaction(int sig, const struct target_sigaction *act,
}

if (block_signals()) {
return -TARGET_ERESTARTSYS;
return -QEMU_ERESTARTSYS;
}

k = &sigact_table[sig - 1];
Expand Down
2 changes: 1 addition & 1 deletion linux-user/sparc/cpu_loop.c
Expand Up @@ -181,7 +181,7 @@ void cpu_loop (CPUSPARCState *env)
env->regwptr[2], env->regwptr[3],
env->regwptr[4], env->regwptr[5],
0, 0);
if (ret == -TARGET_ERESTARTSYS || ret == -TARGET_QEMU_ESIGRETURN) {
if (ret == -QEMU_ERESTARTSYS || ret == -TARGET_QEMU_ESIGRETURN) {
break;
}
if ((abi_ulong)ret >= (abi_ulong)(-515)) {
Expand Down
16 changes: 8 additions & 8 deletions linux-user/syscall.c
Expand Up @@ -547,7 +547,7 @@ static inline abi_long get_errno(abi_long ret)

const char *target_strerror(int err)
{
if (err == TARGET_ERESTARTSYS) {
if (err == QEMU_ERESTARTSYS) {
return "To be restarted";
}
if (err == TARGET_QEMU_ESIGRETURN) {
Expand Down Expand Up @@ -6458,7 +6458,7 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp,
}

if (block_signals()) {
return -TARGET_ERESTARTSYS;
return -QEMU_ERESTARTSYS;
}

fork_start();
Expand Down Expand Up @@ -8328,7 +8328,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
Do thread termination if we have more then one thread. */

if (block_signals()) {
return -TARGET_ERESTARTSYS;
return -QEMU_ERESTARTSYS;
}

pthread_mutex_lock(&clone_lock);
Expand Down Expand Up @@ -9317,7 +9317,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
#endif
ret = get_errno(safe_rt_sigsuspend(&ts->sigsuspend_mask,
SIGSET_T_SIZE));
if (ret != -TARGET_ERESTARTSYS) {
if (ret != -QEMU_ERESTARTSYS) {
ts->in_sigsuspend = 1;
}
}
Expand All @@ -9336,7 +9336,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
unlock_user(p, arg1, 0);
ret = get_errno(safe_rt_sigsuspend(&ts->sigsuspend_mask,
SIGSET_T_SIZE));
if (ret != -TARGET_ERESTARTSYS) {
if (ret != -QEMU_ERESTARTSYS) {
ts->in_sigsuspend = 1;
}
}
Expand Down Expand Up @@ -9452,13 +9452,13 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
#ifdef TARGET_NR_sigreturn
case TARGET_NR_sigreturn:
if (block_signals()) {
return -TARGET_ERESTARTSYS;
return -QEMU_ERESTARTSYS;
}
return do_sigreturn(cpu_env);
#endif
case TARGET_NR_rt_sigreturn:
if (block_signals()) {
return -TARGET_ERESTARTSYS;
return -QEMU_ERESTARTSYS;
}
return do_rt_sigreturn(cpu_env);
case TARGET_NR_sethostname:
Expand Down Expand Up @@ -13145,7 +13145,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
static bool flag;
flag = !flag;
if (flag) {
return -TARGET_ERESTARTSYS;
return -QEMU_ERESTARTSYS;
}
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion linux-user/xtensa/cpu_loop.c
Expand Up @@ -184,7 +184,7 @@ void cpu_loop(CPUXtensaState *env)
env->regs[2] = ret;
break;

case -TARGET_ERESTARTSYS:
case -QEMU_ERESTARTSYS:
env->pc -= 3;
break;

Expand Down

0 comments on commit af254a2

Please sign in to comment.