Browse Source

Implement events using semaphores.

coderain 5 years ago
parent
commit
fa23adff9e
1 changed files with 8 additions and 1 deletions
  1. 8 1
      sdk/semaphore.h

+ 8 - 1
sdk/semaphore.h

@@ -22,12 +22,19 @@
 
 #include "object.h"
 
+#define syscall_wait_semaphore(s, c, t) syscall_wait_for_one((s), (void*)(c), (t))
+
 #define syscall_create_mutex(n, i, h) syscall_create_semaphore((n), (i), 1, (h))
 #define syscall_open_mutex(n, h) syscall_open_semaphore((n), (h))
-#define syscall_wait_semaphore(s, c, t) syscall_wait_for_one((s), (void*)(c), (t))
 #define syscall_wait_mutex(m, t) syscall_wait_semaphore((m), 1, (t))
 #define syscall_release_mutex(m) syscall_release_semaphore((m), 1)
 
+#define syscall_create_event(n, h) syscall_create_mutex((n), 0, (h))
+#define syscall_open_event(n, h) syscall_open_semaphore((n), (h))
+#define syscall_wait_event(e, t) syscall_wait_mutex((e), (t))
+#define syscall_reset_event(e) syscall_wait_mutex((e), 0)
+#define syscall_signal_event(e) syscall_release_mutex((e))
+
 sysret_t syscall_create_semaphore(const char *name, dword_t init_count, dword_t max_count, handle_t *handle);
 sysret_t syscall_open_semaphore(const char *name, handle_t *handle);
 sysret_t syscall_release_semaphore(handle_t semaphore, dword_t count);