]> git.sur5r.net Git - openldap/commitdiff
Windows fixes
authorHoward Chu <hyc@symas.com>
Sun, 6 Jul 2014 14:49:38 +0000 (07:49 -0700)
committerHoward Chu <hyc@symas.com>
Sun, 6 Jul 2014 14:49:38 +0000 (07:49 -0700)
libraries/liblmdb/mdb.c

index 4dbbe8327cf23be764be7276dd512e3bdc9b17cc..bdc11b5a091e8083966179afb633e8b4d58d923d 100644 (file)
 #define pthread_key_delete(x)  TlsFree(x)
 #define pthread_getspecific(x) TlsGetValue(x)
 #define pthread_setspecific(x,y)       (TlsSetValue(x,y) ? 0 : ErrCode())
-#define pthread_mutex_unlock(x)        ReleaseMutex(x)
-#define pthread_mutex_lock(x)  WaitForSingleObject(x, INFINITE)
+#define pthread_mutex_unlock(x)        ReleaseMutex(*x)
+#define pthread_mutex_lock(x)  WaitForSingleObject(*x, INFINITE)
 #define pthread_cond_signal(x) SetEvent(*x)
-#define pthread_cond_wait(cond,mutex)  SignalObjectAndWait(*mutex, *cond, INFINITE, FALSE); WaitForSingleObject(*mutex, INFINITE)
+#define pthread_cond_wait(cond,mutex)  do{SignalObjectAndWait(*mutex, *cond, INFINITE, FALSE); WaitForSingleObject(*mutex, INFINITE);}while(0)
 #define THREAD_CREATE(thr,start,arg)   thr=CreateThread(NULL,0,start,arg,0,NULL)
 #define THREAD_FINISH(thr)     WaitForSingleObject(thr, INFINITE)
-#define LOCK_MUTEX_R(env)      pthread_mutex_lock((env)->me_rmutex)
-#define UNLOCK_MUTEX_R(env)    pthread_mutex_unlock((env)->me_rmutex)
-#define LOCK_MUTEX_W(env)      pthread_mutex_lock((env)->me_wmutex)
-#define UNLOCK_MUTEX_W(env)    pthread_mutex_unlock((env)->me_wmutex)
+#define LOCK_MUTEX_R(env)      pthread_mutex_lock(&(env)->me_rmutex)
+#define UNLOCK_MUTEX_R(env)    pthread_mutex_unlock(&(env)->me_rmutex)
+#define LOCK_MUTEX_W(env)      pthread_mutex_lock(&(env)->me_wmutex)
+#define UNLOCK_MUTEX_W(env)    pthread_mutex_unlock(&(env)->me_wmutex)
 #define getpid()       GetCurrentProcessId()
 #define        MDB_FDATASYNC(fd)       (!FlushFileBuffers(fd))
 #define        MDB_MSYNC(addr,len,flags)       (!FlushViewOfFile(addr,len))