From: David Carlier <devne...@gmail.com> getpid is good enough in a mono thread context, however thr_self/_lwp_self reflects the real current thread identifier from a given process.
Signed-off-by: David Carlier <devne...@gmail.com> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Signed-off-by: David Carlier <devne...@gmail.com> --- 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 -- 2.26.2