qemu/include/user
Ilya Leoshkevich 2b3ccf5f0d user: Introduce host_interrupt_signal
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>
2025-02-10 13:47:59 +00:00
..
abitypes.h linux-user: Remove support for CRIS target 2024-09-13 20:10:50 +02:00
cpu_loop.h user: Move various declarations out of 'exec/exec-all.h' 2024-12-20 17:44:57 +01:00
guest-base.h exec: Restrict inclusion of 'user/guest-base.h' 2024-04-26 17:03:05 +02:00
guest-host.h user: Introduce 'user/guest-host.h' header 2024-12-20 17:44:56 +01:00
page-protection.h accel/tcg: Move user-related declarations out of 'exec/cpu-all.h' (4/4) 2024-12-20 17:44:57 +01:00
safe-syscall.h {linux,bsd}-user: Introduce get_task_state() 2024-03-06 12:35:19 +00:00
signal.h user: Introduce host_interrupt_signal 2025-02-10 13:47:59 +00:00
syscall-trace.h user: Move 'abitypes.h' from 'exec/user' to 'user' 2024-05-03 17:21:18 +02:00
thunk.h user: Move 'thunk.h' from 'exec/user' to 'user' 2024-05-03 17:21:20 +02:00
tswap-target.h exec: Move [b]tswapl() declarations to 'exec/user/tswap-target.h' 2024-04-26 17:03:05 +02:00