|
@@ -73,6 +73,18 @@ static BOOL (WINAPI *cond_wait)(pthread_cond_t *cond, pthread_mutex_t *mutex,
|
|
|
#define cond_broadcast WakeAllConditionVariable
|
|
|
#define cond_signal WakeConditionVariable
|
|
|
#define cond_wait SleepConditionVariableCS
|
|
|
+
|
|
|
+#define CreateEvent(a, reset, init, name) \
|
|
|
+ CreateEventEx(a, name, \
|
|
|
+ (reset ? CREATE_EVENT_MANUAL_RESET : 0) | \
|
|
|
+ (init ? CREATE_EVENT_INITIAL_SET : 0), \
|
|
|
+ EVENT_ALL_ACCESS)
|
|
|
+// CreateSemaphoreExA seems to be desktop-only, but as long as we don't
|
|
|
+// use named semaphores, it doesn't matter if we use the W version.
|
|
|
+#define CreateSemaphore(a, b, c, d) \
|
|
|
+ CreateSemaphoreExW(a, b, c, d, 0, SEMAPHORE_ALL_ACCESS)
|
|
|
+#define InitializeCriticalSection(x) InitializeCriticalSectionEx(x, 0, 0)
|
|
|
+#define WaitForSingleObject(a, b) WaitForSingleObjectEx(a, b, FALSE)
|
|
|
#endif
|
|
|
|
|
|
static unsigned __stdcall attribute_align_arg win32thread_worker(void *arg)
|