Implement events using semaphores.
authorcoderain <coderain@sdf.org>
Tue, 25 Sep 2018 13:52:21 +0000 (15:52 +0200)
committercoderain <coderain@sdf.org>
Tue, 25 Sep 2018 13:52:21 +0000 (15:52 +0200)
sdk/semaphore.h

index 5fdf92840589abee9572e8c3da6256ca67ec3e58..729f675e5e0e508ff0dd858a1da499a7dff65070 100644 (file)
 
 #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);