mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
![]() 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. Reviewed-by: Warner Losh <imp@bsdimp.com> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Message-Id: <20250117001542.8290-5-iii@linux.ibm.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20250207153112.3939799-14-alex.bennee@linaro.org> |
||
---|---|---|
.. | ||
aarch64 | ||
arm | ||
freebsd | ||
host | ||
i386 | ||
include | ||
netbsd | ||
openbsd | ||
riscv | ||
x86_64 | ||
bsd-file.h | ||
bsd-mem.c | ||
bsd-mem.h | ||
bsd-proc.c | ||
bsd-proc.h | ||
bsdload.c | ||
elfcore.c | ||
elfload.c | ||
errno_defs.h | ||
main.c | ||
meson.build | ||
mmap.c | ||
qemu-bsd.h | ||
qemu.h | ||
signal-common.h | ||
signal.c | ||
strace.c | ||
syscall_defs.h | ||
trace-events | ||
trace.h | ||
uaccess.c |