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()