X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Fzebra-lock.c;h=dfd8ceae2ace6073dcd380a56e5043456861313a;hb=71647c93775e998a0e602c0371c34e1143d131dd;hp=47b24241d144dc5dc9c21809631d0ae47d445b66;hpb=69da23537c6bb71ab948e079708bf8ea090de73f;p=idzebra-moved-to-github.git diff --git a/util/zebra-lock.c b/util/zebra-lock.c index 47b2424..dfd8cea 100644 --- a/util/zebra-lock.c +++ b/util/zebra-lock.c @@ -1,37 +1,69 @@ #include +#include #include + int zebra_mutex_init (Zebra_mutex *p) { + if (p->state == 1) + { + fprintf (stderr, "zebra_mutex_init. state=%d\n", p->state); + } + p->state = 1; #if HAVE_PTHREAD_H pthread_mutex_init (&p->mutex, 0); #endif +#ifdef WIN32 + InitializeCriticalSection (&p->mutex); +#endif return 0; } int zebra_mutex_destroy (Zebra_mutex *p) { + --(p->state); + if (p->state != 0) + { + fprintf (stderr, "zebra_mutex_destroy. state = %d\n", p->state); + } #if HAVE_PTHREAD_H pthread_mutex_destroy (&p->mutex); #endif +#ifdef WIN32 + DeleteCriticalSection (&p->mutex); +#endif return 0; } int zebra_mutex_lock (Zebra_mutex *p) { + if (p->state != 1) + { + fprintf (stderr, "zebra_mutex_lock. state = %d\n", p->state); + } #if HAVE_PTHREAD_H pthread_mutex_lock (&p->mutex); #endif +#ifdef WIN32 + EnterCriticalSection (&p->mutex); +#endif return 0; } int zebra_mutex_unlock (Zebra_mutex *p) { + if (p->state != 1) + { + fprintf (stderr, "zebra_mutex_unlock. state = %d\n", p->state); + } #if HAVE_PTHREAD_H pthread_mutex_unlock (&p->mutex); #endif +#ifdef WIN32 + LeaveCriticalSection (&p->mutex); +#endif return 0; }