[kernel] Add endpoint object and related syscalls

The endpoint object adds synchronous IPC. Also added the wait-type of
'object' to threads.
This commit is contained in:
2020-09-07 01:09:56 -07:00
parent 53d260cc6e
commit 8534d8d3c5
13 changed files with 368 additions and 49 deletions

View File

@@ -18,6 +18,11 @@
#define j6_signal_channel_can_send (1ull << 17)
#define j6_signal_channel_can_recv (1ull << 18)
// Endpoint signals
#define j6_signal_endpoint_closed (1ull << 16)
#define j6_signal_endpoint_can_send (1ull << 17)
#define j6_signal_endpoint_can_recv (1ull << 18)
// Signals 48-63 are user-defined signals
#define j6_signal_user0 (1ull << 48)
#define j6_signal_user1 (1ull << 49)

View File

@@ -2,18 +2,25 @@ SYSCALL(0x00, system_log, const char *)
SYSCALL(0x01, system_noop, void)
SYSCALL(0x09, object_wait, j6_handle_t, j6_signal_t, j6_signal_t *)
SYSCALL(0x0a, object_signal, j6_handle_t, j6_signal_t)
SYSCALL(0x0a, object_signal, j6_handle_t, j6_signal_t)
SYSCALL(0x10, process_koid, j6_koid_t *)
SYSCALL(0x11, process_exit, int64_t)
SYSCALL(0x10, process_koid, j6_koid_t *)
SYSCALL(0x11, process_exit, int64_t)
SYSCALL(0x18, thread_koid, j6_koid_t *)
SYSCALL(0x19, thread_create, void *, j6_handle_t *)
SYSCALL(0x1a, thread_exit, int64_t)
SYSCALL(0x1b, thread_pause, void)
SYSCALL(0x1c, thread_sleep, uint64_t)
SYSCALL(0x18, thread_koid, j6_koid_t *)
SYSCALL(0x19, thread_create, void *, j6_handle_t *)
SYSCALL(0x1a, thread_exit, int64_t)
SYSCALL(0x1b, thread_pause, void)
SYSCALL(0x1c, thread_sleep, uint64_t)
SYSCALL(0x20, channel_create, j6_handle_t *)
SYSCALL(0x21, channel_close, j6_handle_t)
SYSCALL(0x22, channel_send, j6_handle_t, size_t *, void *)
SYSCALL(0x23, channel_receive, j6_handle_t, size_t *, void *)
SYSCALL(0x28, endpoint_create, j6_handle_t *)
SYSCALL(0x29, endpoint_close, j6_handle_t)
SYSCALL(0x2a, endpoint_send, j6_handle_t, size_t, void *)
SYSCALL(0x2b, endpoint_receive, j6_handle_t, size_t *, void *)
SYSCALL(0x2c, endpoint_sendrecv, j6_handle_t, size_t *, void *)
SYSCALL(0x20, channel_create, j6_handle_t *)
SYSCALL(0x21, channel_close, j6_handle_t)
SYSCALL(0x22, channel_send, j6_handle_t, size_t *, void *)
SYSCALL(0x23, channel_receive, j6_handle_t, size_t *, void *)