WIN32 update (this version is known not to work on Windows).
[idzebra-moved-to-github.git] / util / zebra-lock.c
index 47b2424..769de1b 100644 (file)
@@ -8,6 +8,9 @@ int zebra_mutex_init (Zebra_mutex *p)
 #if HAVE_PTHREAD_H
     pthread_mutex_init (&p->mutex, 0);
 #endif
+#ifdef WIN32
+    InitializeCriticalSection (&p->mutex);
+#endif
     return 0;
 }
 
@@ -16,6 +19,9 @@ int zebra_mutex_destroy (Zebra_mutex *p)
 #if HAVE_PTHREAD_H
     pthread_mutex_destroy (&p->mutex);
 #endif
+#ifdef WIN32
+    DeleteCriticalSection (&p->mutex);
+#endif
     return 0;
 }
 
@@ -24,6 +30,9 @@ int zebra_mutex_lock (Zebra_mutex *p)
 #if HAVE_PTHREAD_H
     pthread_mutex_lock (&p->mutex);
 #endif
+#ifdef WIN32
+    EnterCriticalSection (&p->mutex);
+#endif
     return 0;
 }
 
@@ -32,6 +41,9 @@ int zebra_mutex_unlock (Zebra_mutex *p)
 #if HAVE_PTHREAD_H
     pthread_mutex_unlock (&p->mutex);
 #endif
+#ifdef WIN32
+    LeaveCriticalSection (&p->mutex);
+#endif
     return 0;
 }