Add synchornization primitives, `waiting` to task
diff --git a/src/kernel/syscall.c b/src/kernel/syscall.c
index 5a48b30..1f31296 100644
--- a/src/kernel/syscall.c
+++ b/src/kernel/syscall.c
@@ -1,10 +1,22 @@
#include "syscall.h"
#include "log.h"
#include "pic.h"
+#include "task.h"
+
+#include <sys.h>
void do_syscall(struct registers *regs)
{
- kprintf(INFO "Syscall executed: %d\n", regs->eax);
+ switch (regs->eax)
+ {
+ case SYS_GIVEUP:
+ // easy, just switch tasks
+ switch_task();
+ break;
+
+ default:
+ kprintf(INFO "Syscall executed: %d\n", regs->eax);
+ }
}
void init_syscall()