On Tue, Aug 19, 2025 at 11:35:26PM +0000, Dr. David Alan Gilbert wrote: > * Daniel P. Berrangé (berra...@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é <berra...@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 :|