X-Git-Url: https://pd.if.org/git/?p=pdclib;a=blobdiff_plain;f=platform%2Fwin32%2Ffunctions%2Fthreads%2Fmtx_unlock.c;h=dcbdc78a2a7c00dc9494887476fc0858cedc3a53;hp=27b7aefadb7d6ff4a277c1e6fedadb27bca74e9d;hb=abc15df6b9fae3374d24c7cf5c3ab94c605b2a6d;hpb=639bad513ab9399ed9a8c588a476a10dbe6c9478 diff --git a/platform/win32/functions/threads/mtx_unlock.c b/platform/win32/functions/threads/mtx_unlock.c index 27b7aef..dcbdc78 100644 --- a/platform/win32/functions/threads/mtx_unlock.c +++ b/platform/win32/functions/threads/mtx_unlock.c @@ -1,39 +1,31 @@ -#ifndef REGTEST -#include -#include - -extern void _PDCLIB_w32errno( void ); -int mtx_unlock(mtx_t *mtx) -{ - if(mtx->_NestCount) { - mtx->_NestCount--; - return thrd_success; - } - - mtx->_ThreadId = 0; - - DWORD res = InterlockedDecrement(&mtx->_State); - if(res == (DWORD) -1) { - // We reset the state to -1; success! - return thrd_success; - } - - DWORD rv = SetEvent(mtx->_WaitEvHandle); - if(rv == 0) { - _PDCLIB_w32errno(); - return thrd_error; - } - - return thrd_success; -} -#endif - -#ifdef TEST -#include <_PDCLIB_test.h> - -int main( void ) -{ - return TEST_RESULTS; -} - +#ifndef REGTEST +#include +#include + +extern void _PDCLIB_w32errno( void ); +int mtx_unlock(mtx_t *mtx) +{ + if(mtx->_NestCount) { + mtx->_NestCount--; + return thrd_success; + } + + mtx->_ThreadId = 0; + DWORD rv = SetEvent(mtx->_WaitEvHandle); + if(rv == 0) { + _PDCLIB_w32errno(); + return thrd_error; + } + return thrd_success; +} +#endif + +#ifdef TEST +#include "_PDCLIB_test.h" + +int main( void ) +{ + return TEST_RESULTS; +} + #endif \ No newline at end of file