#include "syscall.h" #include "keyboard.h" #include "klibc.h" #include "stdarg.h" #include "thread.h" int syscallExecute(int syscallId, const struct cpu_state *userCtx) { int ret; switch (syscallId) { case SYSCALL_ID_EXIT: { uint status; ret = syscallGet1arg(userCtx, &status); if (ret != 0) break; threadExit(); assert(0); break; } case SYSCALL_ID_YOLO: ret = printf("YOLO FROM USERSPACE\n"); break; case SYSCALL_ID_PUTC: { unsigned int c; ret = syscallGet1arg(userCtx, &c); putc(c); break; } case SYSCALL_ID_READ: ret = keyboardRead(); break; default: printf("Unknon syscall id %d\n", syscallId); ret = -ENOENT; } return ret; }