diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2025-02-07 15:31:08 +0000 |
---|---|---|
committer | Alex Bennée <alex.bennee@linaro.org> | 2025-02-10 13:47:59 +0000 |
commit | 2b3ccf5f0db7c75ba990da7e6223c3f7319480c0 (patch) | |
tree | 2d0addea91455d94f39cb2b63390c9c5943d7350 /python/setup.py | |
parent | 08916fd4b6b308941568ecd7305455121ce7c267 (diff) | |
download | qemu-2b3ccf5f0db7c75ba990da7e6223c3f7319480c0.zip qemu-2b3ccf5f0db7c75ba990da7e6223c3f7319480c0.tar.gz qemu-2b3ccf5f0db7c75ba990da7e6223c3f7319480c0.tar.bz2 |
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>
Diffstat (limited to 'python/setup.py')
0 files changed, 0 insertions, 0 deletions