Index: src/benchmark/ctxswitch/cfa_cor.c
===================================================================
--- src/benchmark/ctxswitch/cfa_cor.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
+++ src/benchmark/ctxswitch/cfa_cor.c	(revision b7170a64af11df6abeb2aee55e86f2c43cc0923d)
@@ -1,4 +1,3 @@
-#include <fstream>
-#include <stdlib>
+#include <stdio.h>
 #include <thread>
 
@@ -11,14 +10,7 @@
 }
 
-void main( GreatSuspender & this )
-{
+void main( GreatSuspender & this ) {
 	while( true ) {
 		suspend();
-	}
-}
-
-void resumer( GreatSuspender & this, const unsigned int NoOfTimes ) {
-	for ( volatile unsigned int i = 0; i < NoOfTimes; i += 1 ) {
-		resume( this );
 	}
 }
@@ -28,8 +20,10 @@
 
 	BENCH(
-		resumer( s, NoOfTimes );,
+		for (size_t i = 0; i < n; i++) {
+			resume( s );
+		},
 		result
 	)
 
-	sout | result | endl;
+	printf("%llu\n", result);
 }
Index: src/benchmark/ctxswitch/cfa_thrd.c
===================================================================
--- src/benchmark/ctxswitch/cfa_thrd.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
+++ src/benchmark/ctxswitch/cfa_thrd.c	(revision b7170a64af11df6abeb2aee55e86f2c43cc0923d)
@@ -1,18 +1,15 @@
-#include <fstream>
-#include <stdlib>
+#include <stdio.h>
 #include <thread>
 
 #include "bench.h"
 
-int main() {
-	const unsigned int NoOfTimes = N;
-	long long int StartTime, EndTime;
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			yield();
+		},
+		result
+	)
 
-	StartTime = Time();
-	for ( volatile unsigned int i = 0; i < NoOfTimes; i += 1 ) {
-		yield();
-	}
-	EndTime = Time();
-
-	sout | ( EndTime - StartTime ) / NoOfTimes | endl;
+	printf("%llu\n", result);
 }
Index: src/benchmark/ctxswitch/pthreads.c
===================================================================
--- src/benchmark/ctxswitch/pthreads.c	(revision 034165a8640dca94275d38852f1ba492194b3900)
+++ src/benchmark/ctxswitch/pthreads.c	(revision b7170a64af11df6abeb2aee55e86f2c43cc0923d)
@@ -6,14 +6,12 @@
 #include "bench.h"
 
-int main() {
-	const unsigned int NoOfTimes = N;
-	long long int StartTime, EndTime;
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			sched_yield();
+		},
+		result
+	)
 
-	StartTime = Time();
-	for ( volatile unsigned int i = 0; i < NoOfTimes; i += 1 ) {
-		sched_yield();
-	}
-	EndTime = Time();
-
-	printf("%lld\n", ( EndTime - StartTime ) / NoOfTimes );
+	printf("%llu\n", result);
 }
Index: src/benchmark/ctxswitch/upp_cor.cc
===================================================================
--- src/benchmark/ctxswitch/upp_cor.cc	(revision 034165a8640dca94275d38852f1ba492194b3900)
+++ src/benchmark/ctxswitch/upp_cor.cc	(revision b7170a64af11df6abeb2aee55e86f2c43cc0923d)
@@ -0,0 +1,33 @@
+#include <cstdio>
+
+#include "bench.h"
+
+_Coroutine GreatSuspender {
+public:
+	GreatSuspender() {
+		resume();
+	}
+
+	void do_resume() {
+		resume();
+	}
+private:
+	void main() {
+		while( true ) {
+			suspend();
+		}
+	}
+};
+
+int main(int argc, char* argv[]) {
+	GreatSuspender s;
+
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			s.do_resume();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: src/benchmark/ctxswitch/upp_thrd.cc
===================================================================
--- src/benchmark/ctxswitch/upp_thrd.cc	(revision 034165a8640dca94275d38852f1ba492194b3900)
+++ src/benchmark/ctxswitch/upp_thrd.cc	(revision b7170a64af11df6abeb2aee55e86f2c43cc0923d)
@@ -0,0 +1,14 @@
+#include <cstdio>
+
+#include "bench.h"
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			uThisTask().yield();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
