[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 14/17] osdep: Introduce qemu_kill_thread()
From: |
Alex Bennée |
Subject: |
[PATCH v2 14/17] osdep: Introduce qemu_kill_thread() |
Date: |
Fri, 7 Feb 2025 15:31:09 +0000 |
From: Ilya Leoshkevich <iii@linux.ibm.com>
Add a function for sending signals to individual threads. It does not make
sense on Windows, so do not provide an implementation, so that if someone
uses it by accident, they will get a linker error.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Message-Id: <20250117001542.8290-6-iii@linux.ibm.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
include/qemu/osdep.h | 9 +++++++++
util/oslib-posix.c | 15 +++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 112ebdff21..4397a90680 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -631,6 +631,15 @@ bool qemu_write_pidfile(const char *pidfile, Error **errp);
int qemu_get_thread_id(void);
+/**
+ * qemu_kill_thread:
+ * @tid: thread id.
+ * @sig: host signal.
+ *
+ * Send @sig to one of QEMU's own threads with identifier @tid.
+ */
+int qemu_kill_thread(int tid, int sig);
+
#ifndef CONFIG_IOVEC
struct iovec {
void *iov_base;
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 2bb34dade3..a697c602c6 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -111,6 +111,21 @@ int qemu_get_thread_id(void)
#endif
}
+int qemu_kill_thread(int tid, int sig)
+{
+#if defined(__linux__)
+ return syscall(__NR_tgkill, getpid(), tid, sig);
+#elif defined(__FreeBSD__)
+ return thr_kill2(getpid(), tid, sig);
+#elif defined(__NetBSD__)
+ return _lwp_kill(tid, sig);
+#elif defined(__OpenBSD__)
+ return thrkill(tid, sig, NULL);
+#else
+ return kill(tid, sig);
+#endif
+}
+
int qemu_daemon(int nochdir, int noclose)
{
return daemon(nochdir, noclose);
--
2.39.5
- [PATCH v2 06/17] tests/qtest: tighten up the checks on clock_step, (continued)
- [PATCH v2 06/17] tests/qtest: tighten up the checks on clock_step, Alex Bennée, 2025/02/07
- [PATCH v2 03/17] tests/qtest: don't step clock at start of npcm7xx periodic IRQ test, Alex Bennée, 2025/02/07
- [PATCH v2 02/17] tests/qtest: don't attempt to clock_step while waiting for virtio ISR, Alex Bennée, 2025/02/07
- [PATCH v2 10/17] gdbstub: Allow the %d placeholder in the socket path, Alex Bennée, 2025/02/07
- [PATCH v2 08/17] tests/qtest/migration: Add --full option, Alex Bennée, 2025/02/07
- [PATCH v2 13/17] user: Introduce host_interrupt_signal, Alex Bennée, 2025/02/07
- [PATCH v2 05/17] tests/qtest: rename qtest_send_prefix and roll-up into qtest_send, Alex Bennée, 2025/02/07
- [PATCH v2 07/17] Revert "util/timer: avoid deadlock when shutting down", Alex Bennée, 2025/02/07
- [PATCH v2 14/17] osdep: Introduce qemu_kill_thread(),
Alex Bennée <=
- [PATCH v2 09/17] tests/qtest/migration: Pick smoke tests, Alex Bennée, 2025/02/07
- [PATCH v2 16/17] docs/user: Document the %d placeholder and suspend=n QEMU_GDB features, Alex Bennée, 2025/02/07
- [PATCH v2 11/17] gdbstub: Try unlinking the unix socket before binding, Alex Bennée, 2025/02/07
- [PATCH v2 15/17] gdbstub: Allow late attachment, Alex Bennée, 2025/02/07
- [PATCH v2 12/17] user: Introduce user/signal.h, Alex Bennée, 2025/02/07
- [PATCH v2 17/17] tests/tcg: Add late gdbstub attach test, Alex Bennée, 2025/02/07