Skip to content
Snippets Groups Projects
Commit d34ab8d6 authored by rswindell's avatar rswindell
Browse files

#includes errno.h (for EBUSY and EAGAIN definitions).

Created (non-POSIX) sem_trywait_block implementation for Win32
(need to investigate/implement draft-POSIX sem_timedwait function).
parent fdf94866
No related branches found
No related tags found
No related merge requests found
...@@ -61,12 +61,14 @@ extern "C" { ...@@ -61,12 +61,14 @@ extern "C" {
#include <process.h> /* _beginthread */ #include <process.h> /* _beginthread */
#include <limits.h> /* INT_MAX */ #include <limits.h> /* INT_MAX */
#include <errno.h> /* EAGAIN and EBUSY */
/* POSIX semaphores */ /* POSIX semaphores */
typedef HANDLE sem_t; typedef HANDLE sem_t;
#define sem_init(psem,ps,v) *(psem)=CreateSemaphore(NULL,v,INT_MAX,NULL) #define sem_init(psem,ps,v) *(psem)=CreateSemaphore(NULL,v,INT_MAX,NULL)
#define sem_wait(psem) WaitForSingleObject(*(psem),INFINITE) #define sem_wait(psem) WaitForSingleObject(*(psem),INFINITE)
#define sem_trywait(psem) (WaitForSingleObject(*(psem),0)==WAIT_OBJECT_0?0:EAGAIN) #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_post(psem) ReleaseSemaphore(*(psem),1,NULL)
#define sem_destroy(psem) CloseHandle(*(psem)) #define sem_destroy(psem) CloseHandle(*(psem))
/* No Win32 implementation for sem_getvalue() */ /* No Win32 implementation for sem_getvalue() */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment