Index: src/benchmark/Makefile.am
===================================================================
--- src/benchmark/Makefile.am	(revision d67cdb749954789d84d7a8bbabc0ec601347a7bb)
+++ src/benchmark/Makefile.am	(revision 4149d9d47a294cf1a60328fd01dae145ccc64029)
@@ -19,4 +19,8 @@
 AM_CFLAGS = -g -Wall -Wno-unused-function -O2
 CC = @CFA_BINDIR@/@CFA_NAME@
+REPEAT = ${abs_top_srcdir}/tools/a.out
+repeats = 30
+
+.NOTPARALLEL:
 
 noinst_PROGRAMS = bench$(EXEEXT) ctxswitch-coroutine$(EXEEXT) ctxswitch-thread$(EXEEXT) sched-int$(EXEEXT) monitor$(EXEEXT) csv-data$(EXEEXT)
@@ -30,51 +34,66 @@
 	rm -f ./a.out ;
 
-ctxswitch-coroutine$(EXEEXT):
-	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -DN=50000000 CorCtxSwitch.c
-	@rm -f .result.log
-	@for number in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do \
-                ./a.out | tee -a .result.log ; \
-        done
-	@./stat.py .result.log
-	@rm -f a.out .result.log
-
-ctxswitch-thread$(EXEEXT):
-	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -DN=50000000 ThrdCtxSwitch.c
-	@rm -f .result.log
-	@for number in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do \
-                ./a.out | tee -a .result.log ; \
-        done
-	@./stat.py .result.log
-	@rm -f a.out .result.log
-
-ctxswitch-pthread$(EXEEXT):
-	@BACKEND_CC@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -lrt -pthread -DN=50000000 PthrdCtxSwitch.c
-	@rm -f .result.log
-	@for number in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do \
-                ./a.out | tee -a .result.log ; \
-        done
-	@./stat.py .result.log
-	@rm -f a.out .result.log
-
-sched-int$(EXEEXT):
-	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -DN=50000000 SchedInt.c
-	@rm -f .result.log
-	@for number in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do \
-                ./a.out | tee -a .result.log ; \
-        done
-	@./stat.py .result.log
-	@rm -f a.out .result.log
-
-monitor$(EXEEXT):
-	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -DN=50000000 Monitor.c
-	@rm -f .result.log
-	@for number in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do \
-                ./a.out | tee -a .result.log ; \
-        done
-	@./stat.py .result.log
-	@rm -f a.out .result.log
-
 csv-data$(EXEEXT):
 	@${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -quiet -DN=50000000 csv-data.c
 	@./a.out
 	@rm -f ./a.out
+
+## =========================================================================================================
+ctxswitch$(EXEEXT): \
+	ctxswitch-cfa_coroutine.run 	\
+	ctxswitch-cfa_thread.run 	\
+	ctxswitch-upp_coroutine.run 	\
+	ctxswitch-upp_thread.run 	\
+	ctxswitch-pthread.run
+
+ctxswitch-cfa_coroutine$(EXEEXT):
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -DN=50000000 ctxswitch/cfa_cor.c
+
+ctxswitch-cfa_thread$(EXEEXT):
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -DN=50000000 ctxswitch/cfa_thrd.c
+
+ctxswitch-upp_coroutine$(EXEEXT):
+	u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -DN=50000000 ctxswitch/upp_cor.cc
+
+ctxswitch-upp_thread$(EXEEXT):
+	u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -DN=50000000 ctxswitch/upp_cor.cc
+
+ctxswitch-pthread$(EXEEXT):
+	@BACKEND_CC@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread -DN=50000000 ctxswitch/pthreads.c
+
+## =========================================================================================================
+creation$(EXEEXT) :\
+	creation-pthread.run		\
+	creation-cfa_coroutine.run 	\
+	creation-cfa_thread.run 	\
+	creation-upp_coroutine.run 	\
+	creation-upp_thread.run
+
+creation-cfa_coroutine$(EXEEXT):
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -DBENCH_N=500000000 creation/cfa_cor.c
+
+creation-cfa_thread$(EXEEXT):
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -DBENCH_N=10000000 creation/cfa_thrd.c
+
+creation-upp_coroutine$(EXEEXT):
+	u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -DBENCH_N=50000000 creation/upp_cor.cc
+
+creation-upp_thread$(EXEEXT):
+	u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -DBENCH_N=50000000 creation/upp_cor.cc
+
+creation-pthread$(EXEEXT):
+	@BACKEND_CC@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread -DBENCH_N=2500000 creation/pthreads.c
+
+## =========================================================================================================
+sched-int$(EXEEXT):
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -DN=50000000 SchedInt.c
+
+monitor$(EXEEXT):
+	${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -nodebug -lrt -DN=50000000 Monitor.c
+
+%.run : %$(EXEEXT)
+	@rm -f .result.log
+	@./catchsig
+	@${REPEAT} ${repeats} ./a.out | tee -a .result.log
+	@./stat.py .result.log
+	@rm -f a.out .result.log
