* src/util/threads.h (virThreadID): New prototype. * src/util/threads-pthread.c (virThreadID): New function. * src/util/threads-win32.c (virThreadID): Likewise. * src/libvirt_private.syms (threads.h): Export it. * daemon/event.c (virEventInterruptLocked): Use it to avoid warning on BSD systems. --- daemon/event.c | 3 ++- src/libvirt_private.syms | 1 + src/util/threads-pthread.c | 6 ++++++ src/util/threads-win32.c | 5 +++++ src/util/threads.h | 5 +++++ 5 files changed, 19 insertions(+), 1 deletions(-) diff --git a/daemon/event.c b/daemon/event.c index 0920748..01cb674 100644 --- a/daemon/event.c +++ b/daemon/event.c @@ -653,7 +653,8 @@ static int virEventInterruptLocked(void) if (!eventLoop.running || virThreadIsSelf(&eventLoop.leader)) { - VIR_DEBUG("Skip interrupt, %d %d", eventLoop.running, (int)eventLoop.leader.thread); + VIR_DEBUG("Skip interrupt, %d %d", eventLoop.running, + virThreadID(&eventLoop.leader)); return 0; } diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index aaf48ab..e2def6c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -773,6 +773,7 @@ virMutexInitRecursive; virMutexLock; virMutexUnlock; virThreadCreate; +virThreadID; virThreadIsSelf; virThreadJoin; virThreadSelf; diff --git a/src/util/threads-pthread.c b/src/util/threads-pthread.c index bff4979..826b9d1 100644 --- a/src/util/threads-pthread.c +++ b/src/util/threads-pthread.c @@ -22,6 +22,7 @@ #include <config.h> #include <unistd.h> +#include <inttypes.h> #if HAVE_SYS_SYSCALL_H # include <sys/syscall.h> #endif @@ -197,6 +198,11 @@ int virThreadSelfID(void) #endif } +int virThreadID(virThreadPtr thread) +{ + return (int)(uintptr_t)thread->thread; +} + void virThreadJoin(virThreadPtr thread) { pthread_join(thread->thread, NULL); diff --git a/src/util/threads-win32.c b/src/util/threads-win32.c index 436b3bd..2f4bcfc 100644 --- a/src/util/threads-win32.c +++ b/src/util/threads-win32.c @@ -304,6 +304,11 @@ int virThreadSelfID(void) return (int)GetCurrentThreadId(); } +int virThreadID(virThreadPtr thread) +{ + return (int)thread->thread; +} + void virThreadJoin(virThreadPtr thread) { diff --git a/src/util/threads.h b/src/util/threads.h index fa00a91..de28db6 100644 --- a/src/util/threads.h +++ b/src/util/threads.h @@ -51,7 +51,12 @@ int virThreadCreate(virThreadPtr thread, void virThreadSelf(virThreadPtr thread); bool virThreadIsSelf(virThreadPtr thread); void virThreadJoin(virThreadPtr thread); + +/* These next two functions are for debugging only, since they are not + * guaranteed to give unique values for distinct threads on all + * architectures. */ int virThreadSelfID(void); +int virThreadID(virThreadPtr thread); int virMutexInit(virMutexPtr m) ATTRIBUTE_RETURN_CHECK; int virMutexInitRecursive(virMutexPtr m) ATTRIBUTE_RETURN_CHECK; -- 1.7.3.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list