[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 14/18] osdep: Introduce qemu_kill_thread()
From: |
Alex Bennée |
Subject: |
[PATCH 14/18] osdep: Introduce qemu_kill_thread() |
Date: |
Mon, 3 Feb 2025 14:40:44 +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 15/18] gdbstub: Allow late attachment, (continued)
- [PATCH 15/18] gdbstub: Allow late attachment, Alex Bennée, 2025/02/03
- [PATCH 04/18] tests/qtest: simplify qtest_process_inbuf, Alex Bennée, 2025/02/03
- [PATCH 12/18] user: Introduce user/signal.h, Alex Bennée, 2025/02/03
- [PATCH 08/18] tests/qtest/migration: Add --full option, Alex Bennée, 2025/02/03
- [PATCH 09/18] tests/qtest/migration: Pick smoke tests, Alex Bennée, 2025/02/03
- [PATCH 07/18] Revert "util/timer: avoid deadlock when shutting down", Alex Bennée, 2025/02/03
- [PATCH 13/18] user: Introduce host_interrupt_signal, Alex Bennée, 2025/02/03
- [PATCH 11/18] gdbstub: Try unlinking the unix socket before binding, Alex Bennée, 2025/02/03
- [PATCH 14/18] osdep: Introduce qemu_kill_thread(),
Alex Bennée <=
- [PATCH 16/18] docs/user: Document the %d placeholder and suspend=n QEMU_GDB features, Alex Bennée, 2025/02/03
- [PATCH 17/18] tests/tcg: Add late gdbstub attach test, Alex Bennée, 2025/02/03
- [PATCH 18/18] plugins: fix -Werror=maybe-uninitialized false-positive, Alex Bennée, 2025/02/03