X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fwin32%2Fsilcwin32mutex.c;h=95a6e2651262ee7d203cd98dd0fa27b032f71649;hb=8ea2a4ce03f30c1742dd3af1dd9b6838e60a93eb;hp=0a186f59610ce0774139a976e5c59247b12be2b1;hpb=31cdfafba28cbf5cc0d96caa8310cf31a59633c8;p=silc.git diff --git a/lib/silcutil/win32/silcwin32mutex.c b/lib/silcutil/win32/silcwin32mutex.c index 0a186f59..95a6e265 100644 --- a/lib/silcutil/win32/silcwin32mutex.c +++ b/lib/silcutil/win32/silcwin32mutex.c @@ -21,38 +21,46 @@ #include "silcincludes.h" -#ifdef SILC_THREADS - /* SILC Mutex structure */ struct SilcMutexStruct { +#ifdef SILC_THREADS HANDLE mutex; +#else + void *tmp; +#endif /* SILC_THREADS */ }; bool silc_mutex_alloc(SilcMutex *mutex) { +#ifdef SILC_THREADS *mutex = silc_calloc(1, sizeof(**mutex)); (*mutex)->mutex = CreateMutex(NULL, FALSE, NULL); if (!(*mutex)->mutex) { silc_free(*mutex); return FALSE; } +#endif /* SILC_THREADS */ return TRUE; } void silc_mutex_free(SilcMutex mutex) { +#ifdef SILC_THREADS CloseHandle(mutex->mutex); silc_free(mutex); +#endif /* SILC_THREADS */ } void silc_mutex_lock(SilcMutex mutex) { +#ifdef SILC_THREADS WaitForSingleObject(mutex->mutex, INFINITE); +#endif /* SILC_THREADS */ } void silc_mutex_unlock(SilcMutex mutex) { +#ifdef SILC_THREADS ReleaseMutex(mutex->mutex); -} - #endif /* SILC_THREADS */ +}