Index: src/examples/thread.c
===================================================================
--- src/examples/thread.c	(revision 8def349b0537df4d0b760ecaa43ce8f6d6fe9e94)
+++ src/examples/thread.c	(revision 60819df72083395cf02cd880099d1be4c771a250)
@@ -1,3 +1,5 @@
+#line 1 "thread.c"
 #include <fstream>
+#include <kernel>
 #include <stdlib>
 #include <threads>
@@ -10,5 +12,8 @@
 };
 
-// DECL_THREAD(MyThread)
+DECL_THREAD(MyThread)
+
+void ?{}( MyThread * this ) {
+}
 
 void ?{}( MyThread * this, unsigned id, unsigned count ) {
@@ -17,29 +22,32 @@
 }
 
-// void main(MyThread* this) {
-// 	sout | "Thread" | this->id | " : Suspending" | this->count | "times" | endl;
-// 	yield();
+void main(MyThread* this) {
+	sout | "Thread" | this->id | " : Suspending" | this->count | "times" | endl;
+	yield();
 
-// 	for(int i = 0; i < this->count; i++) {
-// 		sout | "Thread" | this->id | " : Suspend No." | i + 1 | endl;
-// 		yield();
-// 	}
-// }
+	for(int i = 0; i < this->count; i++) {
+		sout | "Thread" | this->id | " : Suspend No." | i + 1 | endl;
+		yield();
+	}
+}
 
 int main(int argc, char* argv[]) {
 
-	// unsigned itterations = 10u;
-	// if(argc == 2) { 
-	// 	int val = ato(argv[1]);
-	// 	assert(val >= 0);
-	// 	itterations = val;
-	// }
+	unsigned itterations = 10u;
+	if(argc == 2) { 
+		int val = ato(argv[1]);
+		assert(val >= 0);
+		itterations = val;
+	}
 
 	sout | "User main begin" | endl;
 
-	// {
-	// 	thread(MyThread) thread1 = { 1u, itterations };
-	// 	thread(MyThread) thread2 = { 2u, itterations };
-	// }
+	{
+		processor p;
+		{
+			thread(MyThread) thread1 = { 1u, itterations };
+			thread(MyThread) thread2 = { 2u, itterations };
+		}
+	}
 
 	sout | "User main end" | endl;
