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() */