#pragma once #include "interrupts/Context.h" #include #define SYS_exit 0 #define SYS_yield 1 #define SYS_sleep 2 #define SYS_write 3 #define SYS_paint 4 #define SYS_gettid 5 #define SYS_mmap 6 #define SYS_munmap 7 #define SYS_open 8 #define SYS_read 9 #define SYS_close 10 #define SYS_seek 11 #define SYS_exec 12 #define SYS_fcntl 13 #define SYS_mprotect 14 namespace Syscall { void entry(Context* context); char* strdup_from_user(const char* user_string); } void sys_exit(Context* context, int status); void sys_yield(Context* context); void sys_sleep(Context* context, uint64_t ms); void sys_write(Context* context, int fd, size_t size, const char* addr); void sys_paint(Context* context, uint64_t x, uint64_t y, uint64_t w, uint64_t h, uint64_t col); void sys_gettid(Context* context); void sys_mmap(Context* context, void* address, size_t size, int prot); void sys_munmap(Context* context, void* address, size_t size); void sys_open(Context* context, const char* filename, int flags); void sys_read(Context* context, int fd, size_t size, char* buffer); void sys_close(Context* context, int fd); void sys_seek(Context* context, int fd, long offset, int whence); void sys_exec(Context* context, const char* pathname); void sys_fcntl(Context* context, int fd, int command, uintptr_t arg); void sys_mprotect(Context* context, void* address, size_t size, int prot);