diff options
author | dzwdz | 2022-07-18 23:55:58 +0200 |
---|---|---|
committer | dzwdz | 2022-07-18 23:55:58 +0200 |
commit | 96f41ff64d8113307f1b60d2eb6852423db34d14 (patch) | |
tree | 5a85a9706a2a11d047f7f5c91f4964bd2167b1ee /src/shared | |
parent | 121794214fd5ae36609c30418dfaf1a073b8784c (diff) |
syscalls: implement execbuf
i have been planning to implement something like this for a while now.
it should be faster when doing consecutive syscalls (to be tested).
it will also be helpful in writing the elf loader
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/execbuf.h | 5 | ||||
-rw-r--r-- | src/shared/syscalls.h | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/shared/execbuf.h b/src/shared/execbuf.h new file mode 100644 index 0000000..70ea35c --- /dev/null +++ b/src/shared/execbuf.h @@ -0,0 +1,5 @@ +#pragma once +/* the instruction format is bound to change, atm it's extremely inefficient */ + +/* takes 5 arguments */ +#define EXECBUF_SYSCALL 0xF0000001 diff --git a/src/shared/syscalls.h b/src/shared/syscalls.h index 2b8bd14..e3b879e 100644 --- a/src/shared/syscalls.h +++ b/src/shared/syscalls.h @@ -28,6 +28,8 @@ enum { _SYSCALL_MEMFLAG, _SYSCALL_PIPE, + _SYSCALL_EXECBUF, + _SYSCALL_DEBUG_KLOG, }; @@ -85,4 +87,7 @@ long _syscall_fs_respond(void __user *buf, long ret, int flags); void __user *_syscall_memflag(void __user *addr, size_t len, int flags); long _syscall_pipe(handle_t __user user_ends[2], int flags); +/* see shared/execbuf.h */ +long _syscall_execbuf(void __user *buf, size_t len); + void _syscall_debug_klog(const void __user *buf, size_t len); |