diff options
author | dzwdz | 2021-08-24 16:56:17 +0200 |
---|---|---|
committer | dzwdz | 2021-08-24 16:56:17 +0200 |
commit | 31c1536e68399a199a09fa55571fa5bdd92cbef7 (patch) | |
tree | b41d4de2255d7902146081cf61bb16fd2ddcbba5 /src/shared/syscalls.h | |
parent | 8625003ed7f688a62988f03cc6987574b9d591d2 (diff) |
move syscalls.h to shared/syscalls.h
Diffstat (limited to 'src/shared/syscalls.h')
-rw-r--r-- | src/shared/syscalls.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/shared/syscalls.h b/src/shared/syscalls.h new file mode 100644 index 0000000..89907ae --- /dev/null +++ b/src/shared/syscalls.h @@ -0,0 +1,42 @@ +#pragma once +#include <stddef.h> + +typedef int fd_t; +typedef int fs_handle_t; + +enum { + // idc about stable syscall numbers just yet + _SYSCALL_EXIT, + _SYSCALL_AWAIT, + _SYSCALL_FORK, + + _SYSCALL_FS_OPEN, + _SYSCALL_MOUNT, + + _SYSCALL_FD_READ, + _SYSCALL_FD_WRITE, + _SYSCALL_FD_CLOSE, +}; + +/** Kills the current process. + * TODO: what happens to the children? + */ +_Noreturn void _syscall_exit(const char *msg, size_t len); + +/** Waits for a child to exit, putting its exit message into *buf. + * @return the length of the message + */ +int _syscall_await(char *buf, int len); + +/** Creates a copy of the current process, and executes it. + * All user memory pages get copied too. + * @return 0 in the child, a meaningless positive value in the parent. + */ +int _syscall_fork(); + +fd_t _syscall_fs_open(const char *path, int len); +int _syscall_mount(const char *path, int len, fd_t fd); + +int _syscall_fd_read(fd_t fd, char *buf, int len); +int _syscall_fd_write(fd_t fd, char *buf, int len); +int _syscall_fd_close(fd_t fd); |