
"Richard W.M. Jones" <rjones@redhat.com> wrote:
I got about 95% of the way towards compiling on MinGW using the MinGW cross-compiler from http://mirzam.it.vu.nl/mingw/. Attached are some fairly non-controversial patches which fix some of the problems I found. Build notes follow below. ... Index: src/hash.c =================================================================== RCS file: /data/cvs/libvirt/src/hash.c,v retrieving revision 1.36 diff -u -r1.36 hash.c --- src/hash.c 10 Apr 2008 16:53:29 -0000 1.36 +++ src/hash.c 17 Apr 2008 18:55:16 -0000 @@ -25,7 +25,10 @@ #include <libxml/threads.h> #include "internal.h" #include "hash.h" + +#if HAVE_PTHREAD_H #include <pthread.h> +#endif
Hi Rich, Looks good. You might want to define-away the pthread_* functions instead. With definitions something like this (untested) you can remove all of those in-function #if directives. #if HAVE_PTHREAD_H # include <pthread.h> #else # define pthread_mutex_init(a, b) /* empty */ # define pthread_mutex_lock(a) /* empty */ # define pthread_mutex_unlock(a) /* empty */ # define pthread_mutex_destroy(a) /* empty */ #endif
#define MAX_HASH_LEN 8
@@ -713,7 +716,9 @@ if (ret->storageVols == NULL) goto failed;
+#if HAVE_LIBPTHREAD pthread_mutex_init(&ret->lock, NULL); +#endif
ret->refs = 1; return(ret); @@ -729,7 +734,9 @@ if (ret->storageVols != NULL) virHashFree(ret->storageVols, (virHashDeallocator) virStorageVolFreeName);
+#if HAVE_LIBPTHREAD pthread_mutex_destroy(&ret->lock); +#endif free(ret); } return(NULL); @@ -762,8 +769,10 @@
free(conn->name);
+#if HAVE_LIBPTHREAD pthread_mutex_unlock(&conn->lock); pthread_mutex_destroy(&conn->lock); +#endif free(conn); }
@@ -784,7 +793,9 @@ virHashError(conn, VIR_ERR_INVALID_ARG, __FUNCTION__); return(-1); } +#if HAVE_LIBPTHREAD pthread_mutex_lock(&conn->lock); +#endif DEBUG("unref connection %p %s %d", conn, conn->name, conn->refs); conn->refs--; refs = conn->refs; @@ -793,7 +804,9 @@ /* Already unlocked mutex */ return (0); } +#if HAVE_LIBPTHREAD pthread_mutex_unlock(&conn->lock); +#endif return (refs); }
@@ -818,7 +831,9 @@ virHashError(conn, VIR_ERR_INVALID_ARG, __FUNCTION__); return(NULL); } +#if HAVE_LIBPTHREAD pthread_mutex_lock(&conn->lock); +#endif
/* TODO search by UUID first as they are better differenciators */
@@ -849,11 +864,15 @@ conn->refs++; } ret->refs++; +#if HAVE_LIBPTHREAD pthread_mutex_unlock(&conn->lock); +#endif return(ret);
error: +#if HAVE_LIBPTHREAD pthread_mutex_unlock(&conn->lock); +#endif
...