qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 4/8] user: Introduce host_interrupt_signal


From: Richard Henderson
Subject: Re: [PATCH 4/8] user: Introduce host_interrupt_signal
Date: Tue, 5 Nov 2024 14:45:41 +0000
User-agent: Mozilla Thunderbird

On 10/24/24 20:59, Ilya Leoshkevich wrote:
Attaching to the gdbstub of a running process requires stopping its
threads. For threads that run on a CPU, cpu_exit() is enough, but the
only way to grab attention of a thread that is stuck in a long-running
syscall is to interrupt it with a signal.

Reserve a host realtime signal for this, just like it's already done
for TARGET_SIGABRT on Linux. This may reduce the number of available
guest realtime signals by one, but this is acceptable, since there are
quite a lot of them, and it's unlikely that there are apps that need
them all.

Set signal_pending for the safe_sycall machinery to prevent invoking
the syscall. This is a lie, since we don't queue a guest signal, but
process_pending_signals() can handle the absence of pending signals.
The syscall returns with QEMU_ERESTARTSYS errno, which arranges for
the automatic restart. This is important, because it helps avoiding
disturbing poorly written guests.

Signed-off-by: Ilya Leoshkevich<iii@linux.ibm.com>
---
  bsd-user/signal.c     | 12 ++++++++++++
  include/user/signal.h |  2 ++
  linux-user/signal.c   | 11 +++++++++++
  3 files changed, 25 insertions(+)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]