* 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. Dave > +#endif > +} > diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c > index 5e6ca0c12f..f6956717b2 100644 > --- a/util/qemu-thread-win32.c > +++ b/util/qemu-thread-win32.c > @@ -412,3 +412,8 @@ bool qemu_thread_is_self(QemuThread *thread) > { > return GetCurrentThreadId() == thread->tid; > } > + > +uint64_t qemu_thread_get_id(void) > +{ > + return (uint64_t)GetCurrentThreadId(); > +} > -- > 2.50.1 > -- -----Open up your eyes, open up your mind, open up your code ------- / Dr. David Alan Gilbert | Running GNU/Linux | Happy \ \ dave @ treblig.org | | In Hex / \ _________________________|_____ http://www.treblig.org |_______/