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 :|

Reply via email to