* Daniel P. Berrangé ([email protected]) 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é <[email protected]>
> ---
> 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 |_______/