
On Tue, Aug 19, 2025 at 11:35:26PM +0000, Dr. David Alan Gilbert wrote:
* Daniel P. Berrangé (berrange@redhat.com) wrote:
For logging it is useful to include the current thread id. On POSIX there is no standard API for this, so try the Linux gettid() syscall preferentially, otherwise fallback to casting the result of thread_self() to an integer.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> --- include/qemu/thread.h | 1 + util/qemu-thread-posix.c | 11 +++++++++++ util/qemu-thread-win32.c | 5 +++++ 3 files changed, 17 insertions(+)
diff --git a/include/qemu/thread.h b/include/qemu/thread.h index 3a286bb3ef..96eee82679 100644 --- a/include/qemu/thread.h +++ b/include/qemu/thread.h @@ -215,6 +215,7 @@ void *qemu_thread_join(QemuThread *thread); void qemu_thread_get_self(QemuThread *thread); bool qemu_thread_is_self(QemuThread *thread); G_NORETURN void qemu_thread_exit(void *retval); +uint64_t qemu_thread_get_id(void);
struct Notifier; /** diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c index 121d7ed69b..f240a93632 100644 --- a/util/qemu-thread-posix.c +++ b/util/qemu-thread-posix.c @@ -532,3 +532,14 @@ void *qemu_thread_join(QemuThread *thread) } return ret; } + +uint64_t qemu_thread_get_id(void) +{ +#ifdef CONFIG_GETTID + return (uint64_t)gettid(); +#elif defined(SYS_gettid) + return (uint64_t)syscall(SYS_gettid); +#else + return (uint64_t)pthread_self();
My reading of the manpage is that is not guaranteed to be castable. It also explicitly says it's not the same as gettid. Albeit probably is.
Yeah, technically pthread_t could be a struct. Guess it depends how much we care about strict standards portability, vs portability to our tested set of platforms (macOS, *BSD)[1]. We could hardcode to 0 as an alternative. With regards, Daniel [1] admittedly i've not actually compile tested this yet on non-Linux, aside from Windows which uses the non-pthreads code. -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|