Add synchornization primitives, `waiting` to task
diff --git a/src/libsys/Jmk b/src/libsys/Jmk
new file mode 100644
index 0000000..b233578
--- /dev/null
+++ b/src/libsys/Jmk
@@ -0,0 +1,21 @@
+init(libsys, libsys.a)
+
+preset(optimize)
+preset(warn)
+preset(freestanding)
+preset(32)
+preset(debug)
+preset(nasm)
+
+archetype(asm)
+
+OBJECTS = sys.o
+
+sys.s: sys.inc
+
+sys.inc: $(ROOT)/include/sys.h
+	@cat $< | grep '#define' | sed 's/^#/%/' > $@
+
+type(static_lib)
+
+finish
diff --git a/src/libsys/sys.s b/src/libsys/sys.s
new file mode 100644
index 0000000..aa2212e
--- /dev/null
+++ b/src/libsys/sys.s
@@ -0,0 +1,11 @@
+;;;; Bluejay system call client library implementation.
+
+	;; System call numbers
+	%include "sys.inc"
+
+	[bits 32]
+	[global sys_giveup]
+sys_giveup:
+	mov eax, SYS_GIVEUP
+	int SYS_INT
+	ret							; Will return here after the task is re-scheduled