[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 6/9] osdep: Introduce qemu_kill_thread()
From: |
Ilya Leoshkevich |
Subject: |
[PATCH v4 6/9] osdep: Introduce qemu_kill_thread() |
Date: |
Wed, 8 Jan 2025 21:05:01 +0100 |
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@bsidmp.com>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
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 b94fb5fab8c..37ee3eabae3 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -630,6 +630,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 7a542cb50b5..f8eb3f17b2f 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.47.1
- [PATCH v4 0/9] gdbstub: Allow late attachment, Ilya Leoshkevich, 2025/01/08
- [PATCH v4 3/9] gdbstub: Try unlinking the unix socket before binding, Ilya Leoshkevich, 2025/01/08
- [PATCH v4 1/9] qapi: Make qapi_bool_parse() gracefully handle NULL value, Ilya Leoshkevich, 2025/01/08
- [PATCH v4 2/9] gdbstub: Allow the %d placeholder in the socket path, Ilya Leoshkevich, 2025/01/08
- [PATCH v4 4/9] user: Introduce user/signal.h, Ilya Leoshkevich, 2025/01/08
- [PATCH v4 5/9] user: Introduce host_interrupt_signal, Ilya Leoshkevich, 2025/01/08
- [PATCH v4 6/9] osdep: Introduce qemu_kill_thread(),
Ilya Leoshkevich <=
- [PATCH v4 8/9] docs/user: Document the %d placeholder and suspend=n QEMU_GDB features, Ilya Leoshkevich, 2025/01/08
- [PATCH v4 7/9] gdbstub: Allow late attachment, Ilya Leoshkevich, 2025/01/08
- [PATCH v4 9/9] tests/tcg: Add late gdbstub attach test, Ilya Leoshkevich, 2025/01/08