From 31c1536e68399a199a09fa55571fa5bdd92cbef7 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Tue, 24 Aug 2021 16:56:17 +0200 Subject: move syscalls.h to shared/syscalls.h --- src/shared/syscalls.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/shared/syscalls.h (limited to 'src/shared/syscalls.h') 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 + +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); -- cgit v1.2.3