Reviewed-by: Kamil Rytarowski <ka...@netbsd.org>
On 26.05.2020 09:29, David CARLIER wrote:
> From 792fbcd9114f43bd80fd1ef5b25cd9935a536f9f Mon Sep 17 00:00:00 2001
> From: David Carlier <devne...@gmail.com>
> Date: Tue, 26 May 2020 08:25:26 +0100
> Subject: [PATCH] util/oslib: Returns the real thread identifier on FreeBSD and
> NetBSD
>
> getpid is good enough in a mono thread context, however
> thr_self/_lwp_self reflects the real current thread identifier
> from a given process.
> ---
> util/oslib-posix.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/util/oslib-posix.c b/util/oslib-posix.c
> index 062236a1ab..916f1be224 100644
> --- a/util/oslib-posix.c
> +++ b/util/oslib-posix.c
> @@ -48,11 +48,13 @@
> #ifdef __FreeBSD__
> #include <sys/sysctl.h>
> #include <sys/user.h>
> +#include <sys/thr.h>
> #include <libutil.h>
> #endif
>
> #ifdef __NetBSD__
> #include <sys/sysctl.h>
> +#include <lwp.h>
> #endif
>
> #include "qemu/mmap-alloc.h"
> @@ -84,6 +86,13 @@ int qemu_get_thread_id(void)
> {
> #if defined(__linux__)
> return syscall(SYS_gettid);
> +#elif defined(__FreeBSD__)
> + /* thread id is up to INT_MAX */
> + long tid;
> + thr_self(&tid);
> + return (int)tid;
> +#elif defined(__NetBSD__)
> + return _lwp_self();
> #else
> return getpid();
> #endif
>