* src/util/threads.c (includes) [WIN32]: On mingw, favor native threading over pthreads-win32 library. * src/util/thread.h [WIN32] Likewise. Suggested by Daniel P. Berrange. --- Changes from v1: new patch: On 06/03/2010 08:02 AM, Daniel P. Berrange wrote: >>> So, is the libvirt patch worth installing, while we wait for the >>> eventual fix of dependencies to not force mingw32-pthreads on 64-bit users? >> >> How about changing configure.ac so that it defaults to looking for win32 >> threads on Win32, rather than trying pthreads >That would also be a useful patch, but seems like it would be >insufficient on its own. In other words, there are two issues here - >dealing with a broken <pthread.h> if it gets pulled in (which, for >example, it WILL be pulled in by gnulib if it exists since it defines >struct timespec, even if we don't use it for anything pthread-related), >and the issue of whether we should favor pthread or win32 threading. It turns out to not be a configure.ac issue at all. I tested that patch 1/2, in isolation, solves the struct timespec issue that I was seeing on mingw by not pulling in pthreads-win32 code, but does not solve remaining mingw issues. And patch 2/2, in isolation, compiles clean but doesn't avoid pthreads-win32. So, okay to push both patches? src/util/threads-win32.c | 2 +- src/util/threads.c | 12 ++++++------ src/util/threads.h | 10 ++++------ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/util/threads-win32.c b/src/util/threads-win32.c index e478560..fe1fcd0 100644 --- a/src/util/threads-win32.c +++ b/src/util/threads-win32.c @@ -1,7 +1,7 @@ /* * threads-win32.c: basic thread synchronization primitives * - * Copyright (C) 2009 Red Hat, Inc. + * Copyright (C) 2009-2010 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/src/util/threads.c b/src/util/threads.c index 8c0a91a..4ebce56 100644 --- a/src/util/threads.c +++ b/src/util/threads.c @@ -23,12 +23,12 @@ #include "threads.h" -#ifdef HAVE_PTHREAD_MUTEXATTR_INIT +/* On mingw, we prefer native threading over the sometimes-broken + * pthreads-win32 library wrapper. */ +#ifdef WIN32 +# include "threads-win32.c" +#elif defined HAVE_PTHREAD_MUTEXATTR_INIT # include "threads-pthread.c" #else -# ifdef WIN32 -# include "threads-win32.c" -# else -# error "Either pthreads or Win32 threads are required" -# endif +# error "Either pthreads or Win32 threads are required" #endif diff --git a/src/util/threads.h b/src/util/threads.h index 8b2be8d..db54ea0 100644 --- a/src/util/threads.h +++ b/src/util/threads.h @@ -61,14 +61,12 @@ int virThreadLocalInit(virThreadLocalPtr l, void *virThreadLocalGet(virThreadLocalPtr l); void virThreadLocalSet(virThreadLocalPtr l, void*); -# ifdef HAVE_PTHREAD_MUTEXATTR_INIT +# ifdef WIN32 +# include "threads-win32.h" +# elif defined HAVE_PTHREAD_MUTEXATTR_INIT # include "threads-pthread.h" # else -# ifdef WIN32 -# include "threads-win32.h" -# else -# error "Either pthreads or Win32 threads are required" -# endif +# error "Either pthreads or Win32 threads are required" # endif #endif -- 1.7.0.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list