diff --git a/src/xpdev/threadwrap.h b/src/xpdev/threadwrap.h index 93159b947e5e5d88791225a98f9371dd4bb53bd7..5b966d0d58102de5ca7c95835705f68a752cabb2 100644 --- a/src/xpdev/threadwrap.h +++ b/src/xpdev/threadwrap.h @@ -61,12 +61,14 @@ extern "C" { #include <process.h> /* _beginthread */ #include <limits.h> /* INT_MAX */ + #include <errno.h> /* EAGAIN and EBUSY */ /* POSIX semaphores */ typedef HANDLE sem_t; #define sem_init(psem,ps,v) *(psem)=CreateSemaphore(NULL,v,INT_MAX,NULL) #define sem_wait(psem) WaitForSingleObject(*(psem),INFINITE) #define sem_trywait(psem) (WaitForSingleObject(*(psem),0)==WAIT_OBJECT_0?0:EAGAIN) + #define sem_trywait_block(psem,t) (WaitForSingleObject(*(psem),t)==WAIT_OBJECT_0?0:EAGAIN) #define sem_post(psem) ReleaseSemaphore(*(psem),1,NULL) #define sem_destroy(psem) CloseHandle(*(psem)) /* No Win32 implementation for sem_getvalue() */