Index: src/benchmark/Makefile.am
===================================================================
--- src/benchmark/Makefile.am	(revision 3edc2df79a0bc8f27bb4751b39f173cd147bc079)
+++ src/benchmark/Makefile.am	(revision a5b7905d626e51a2c959ddc46ed61c06d1e970c7)
@@ -23,4 +23,6 @@
 STATS    = ${TOOLSDIR}stat.py
 repeats  = 30
+TIME_FORMAT = "%E"
+PRINT_FORMAT = '%20s\t'
 
 .NOTPARALLEL:
@@ -29,185 +31,4 @@
 
 all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
-
-bench$(EXEEXT) :
-	@for ccflags in "-debug" "-nodebug"; do \
-		echo ${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -lrt bench.c;\
-		${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt bench.c;\
-		./a.out ; \
-	done ; \
-	rm -f ./a.out ;
-
-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-pthread.run		\
-	ctxswitch-cfa_coroutine.run	\
-	ctxswitch-cfa_thread.run	\
-	ctxswitch-upp_coroutine.run	\
-	ctxswitch-upp_thread.run
-
-ctxswitch-cfa_coroutine$(EXEEXT):
-	${CC}        ctxswitch/cfa_cor.c   -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-cfa_thread$(EXEEXT):
-	${CC}        ctxswitch/cfa_thrd.c  -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-upp_coroutine$(EXEEXT):
-	u++          ctxswitch/upp_cor.cc  -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-upp_thread$(EXEEXT):
-	u++          ctxswitch/upp_thrd.cc -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-pthread$(EXEEXT):
-	@BACKEND_CC@ ctxswitch/pthreads.c  -DBENCH_N=50000000  -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-## =========================================================================================================
-mutex$(EXEEXT) :\
-	mutex-function.run	\
-	mutex-pthread_lock.run	\
-	mutex-upp.run		\
-	mutex-cfa1.run		\
-	mutex-cfa2.run		\
-	mutex-cfa4.run
-
-mutex-function$(EXEEXT):
-	@BACKEND_CC@ mutex/function.c    -DBENCH_N=500000000   -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-pthread_lock$(EXEEXT):
-	@BACKEND_CC@ mutex/pthreads.c    -DBENCH_N=50000000    -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-upp$(EXEEXT):
-	u++          mutex/upp.cc        -DBENCH_N=50000000    -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa1$(EXEEXT):
-	${CC}        mutex/cfa1.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa2$(EXEEXT):
-	${CC}        mutex/cfa2.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa4$(EXEEXT):
-	${CC}        mutex/cfa4.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-## =========================================================================================================
-signal$(EXEEXT) :\
-	signal-upp.run		\
-	signal-cfa1.run		\
-	signal-cfa2.run		\
-	signal-cfa4.run
-
-signal-upp$(EXEEXT):
-	u++          schedint/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa1$(EXEEXT):
-	${CC}        schedint/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa2$(EXEEXT):
-	${CC}        schedint/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa4$(EXEEXT):
-	${CC}        schedint/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-## =========================================================================================================
-waitfor$(EXEEXT) :\
-	waitfor-upp.run		\
-	waitfor-cfa1.run		\
-	waitfor-cfa2.run		\
-	waitfor-cfa4.run
-
-waitfor-upp$(EXEEXT):
-	u++          schedext/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa1$(EXEEXT):
-	${CC}        schedext/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa2$(EXEEXT):
-	${CC}        schedext/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa4$(EXEEXT):
-	${CC}        schedext/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-## =========================================================================================================
-creation$(EXEEXT) :\
-	creation-pthread.run			\
-	creation-cfa_coroutine.run		\
-	creation-cfa_coroutine_eager.run	\
-	creation-cfa_thread.run			\
-	creation-upp_coroutine.run		\
-	creation-upp_thread.run
-
-creation-cfa_coroutine$(EXEEXT):
-	${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-cfa_coroutine_eager$(EXEEXT):
-	${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
-
-creation-cfa_thread$(EXEEXT):
-	${CC}        creation/cfa_thrd.c  -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-upp_coroutine$(EXEEXT):
-	u++          creation/upp_cor.cc  -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-upp_thread$(EXEEXT):
-	u++          creation/upp_thrd.cc -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-pthread$(EXEEXT):
-	@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000     -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-## =========================================================================================================
-
-compile$(EXEEXT) :\
-	compile-array$(EXEEXT)		\
-	compile-attributes$(EXEEXT)	\
-	compile-empty$(EXEEXT)  	\
-	compile-expression$(EXEEXT)	\
-	compile-io$(EXEEXT)		\
-	compile-monitor$(EXEEXT)	\
-	compile-operators$(EXEEXT)	\
-	compile-thread$(EXEEXT)		\
-	compile-typeof$(EXEEXT)
-
-
-compile-array$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/array.c
-
-compile-attributes$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/attributes.c
-
-compile-empty$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w compile/empty.c
-
-compile-expression$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/expression.c
-
-compile-io$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/io.c
-
-compile-monitor$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/monitor.c
-
-compile-operators$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/operators.c
-
-compile-thread$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/thread.c
-
-compile-typeof$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/typeof.c
-
-
-## =========================================================================================================
 
 %.run : %$(EXEEXT) ${REPEAT}
@@ -220,4 +41,204 @@
 	@rm -f a.out .result.log
 
+%.runquiet :
+	@+make $(basename $@)
+	@./a.out
+	@rm -f a.out
+
+%.make :
+	@printf "${PRINT_FORMAT}" $(basename $(subst compile-,,$@))
+	@+/usr/bin/time -f ${TIME_FORMAT} make $(basename $@) 2>&1
+
 ${REPEAT} :
 	@+make -C ${TOOLSDIR} repeat
+
+## =========================================================================================================
+
+jenkins$(EXEEXT):
+	@echo "{"
+	@echo -e '\t"githash": "'${githash}'",'
+	@echo -e '\t"arch": "'   ${arch}   '",'
+	@echo -e '\t"compile": {'
+	@+make compile TIME_FORMAT='%e,' PRINT_FORMAT='\t\t\"%s\" :'
+	@echo -e '\t\t"dummy" : {}'
+	@echo -e '\t},'
+	@echo -e '\t"ctxswitch": {'
+	@echo -en '\t\t"coroutine":'
+	@+make ctxswitch-cfa_coroutine.runquiet
+	@echo -en '\t\t,"thread":'
+	@+make ctxswitch-cfa_thread.runquiet
+	@echo -e '\t},'
+	@echo -e '\t"mutex": ['
+	@echo -en '\t\t'
+	@+make mutex-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make mutex-cfa2.runquiet
+	@echo -e '\t],'
+	@echo -e '\t"scheduling": ['
+	@echo -en '\t\t'
+	@+make signal-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make signal-cfa2.runquiet
+	@echo -en '\t\t,'
+	@+make waitfor-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make waitfor-cfa2.runquiet
+	@echo -e '\n\t],'
+	@echo -e '\t"epoch": ' $(shell date +%s)
+	@echo "}"
+
+## =========================================================================================================
+ctxswitch$(EXEEXT): \
+	ctxswitch-pthread.run		\
+	ctxswitch-cfa_coroutine.run	\
+	ctxswitch-cfa_thread.run	\
+	ctxswitch-upp_coroutine.run	\
+	ctxswitch-upp_thread.run
+
+ctxswitch-cfa_coroutine$(EXEEXT):
+	@${CC}        ctxswitch/cfa_cor.c   -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-cfa_thread$(EXEEXT):
+	@${CC}        ctxswitch/cfa_thrd.c  -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-upp_coroutine$(EXEEXT):
+	@u++          ctxswitch/upp_cor.cc  -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-upp_thread$(EXEEXT):
+	@u++          ctxswitch/upp_thrd.cc -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-pthread$(EXEEXT):
+	@@BACKEND_CC@ ctxswitch/pthreads.c  -DBENCH_N=50000000  -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+## =========================================================================================================
+mutex$(EXEEXT) :\
+	mutex-function.run	\
+	mutex-pthread_lock.run	\
+	mutex-upp.run		\
+	mutex-cfa1.run		\
+	mutex-cfa2.run		\
+	mutex-cfa4.run
+
+mutex-function$(EXEEXT):
+	@@BACKEND_CC@ mutex/function.c    -DBENCH_N=500000000   -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-pthread_lock$(EXEEXT):
+	@@BACKEND_CC@ mutex/pthreads.c    -DBENCH_N=50000000    -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-upp$(EXEEXT):
+	@u++          mutex/upp.cc        -DBENCH_N=50000000    -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-cfa1$(EXEEXT):
+	@${CC}        mutex/cfa1.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-cfa2$(EXEEXT):
+	@${CC}        mutex/cfa2.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-cfa4$(EXEEXT):
+	@${CC}        mutex/cfa4.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+## =========================================================================================================
+signal$(EXEEXT) :\
+	signal-upp.run		\
+	signal-cfa1.run		\
+	signal-cfa2.run		\
+	signal-cfa4.run
+
+signal-upp$(EXEEXT):
+	@u++          schedint/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+signal-cfa1$(EXEEXT):
+	@${CC}        schedint/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+signal-cfa2$(EXEEXT):
+	@${CC}        schedint/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+signal-cfa4$(EXEEXT):
+	@${CC}        schedint/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+## =========================================================================================================
+waitfor$(EXEEXT) :\
+	waitfor-upp.run		\
+	waitfor-cfa1.run		\
+	waitfor-cfa2.run		\
+	waitfor-cfa4.run
+
+waitfor-upp$(EXEEXT):
+	@u++          schedext/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+waitfor-cfa1$(EXEEXT):
+	@${CC}        schedext/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+waitfor-cfa2$(EXEEXT):
+	@${CC}        schedext/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+waitfor-cfa4$(EXEEXT):
+	@${CC}        schedext/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+## =========================================================================================================
+creation$(EXEEXT) :\
+	creation-pthread.run			\
+	creation-cfa_coroutine.run		\
+	creation-cfa_coroutine_eager.run	\
+	creation-cfa_thread.run			\
+	creation-upp_coroutine.run		\
+	creation-upp_thread.run
+
+creation-cfa_coroutine$(EXEEXT):
+	@${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-cfa_coroutine_eager$(EXEEXT):
+	@${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
+
+creation-cfa_thread$(EXEEXT):
+	@${CC}        creation/cfa_thrd.c  -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-upp_coroutine$(EXEEXT):
+	@u++          creation/upp_cor.cc  -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-upp_thread$(EXEEXT):
+	@u++          creation/upp_thrd.cc -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-pthread$(EXEEXT):
+	@@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000     -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+## =========================================================================================================
+
+compile$(EXEEXT) :\
+	compile-array.make	\
+	compile-attributes.make	\
+	compile-empty.make  	\
+	compile-expression.make	\
+	compile-io.make		\
+	compile-monitor.make	\
+	compile-operators.make	\
+	compile-typeof.make
+
+
+compile-array$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/array.c
+
+compile-attributes$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/attributes.c
+
+compile-empty$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w compile/empty.c
+
+compile-expression$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/expression.c
+
+compile-io$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/io.c
+
+compile-monitor$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/monitor.c
+
+compile-operators$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/operators.c
+
+compile-thread$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/thread.c
+
+compile-typeof$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/typeof.c
+
Index: src/benchmark/Makefile.in
===================================================================
--- src/benchmark/Makefile.in	(revision 3edc2df79a0bc8f27bb4751b39f173cd147bc079)
+++ src/benchmark/Makefile.in	(revision a5b7905d626e51a2c959ddc46ed61c06d1e970c7)
@@ -253,4 +253,6 @@
 STATS = ${TOOLSDIR}stat.py
 repeats = 30
+TIME_FORMAT = "%E"
+PRINT_FORMAT = '%20s\t'
 all: all-am
 
@@ -446,179 +448,4 @@
 all : ctxswitch$(EXEEXT) mutex$(EXEEXT) signal$(EXEEXT) waitfor$(EXEEXT) creation$(EXEEXT)
 
-bench$(EXEEXT) :
-	@for ccflags in "-debug" "-nodebug"; do \
-		echo ${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -lrt bench.c;\
-		${CC} ${AM_CFLAGS} ${CFLAGS} $${ccflags} -lrt bench.c;\
-		./a.out ; \
-	done ; \
-	rm -f ./a.out ;
-
-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-pthread.run		\
-	ctxswitch-cfa_coroutine.run	\
-	ctxswitch-cfa_thread.run	\
-	ctxswitch-upp_coroutine.run	\
-	ctxswitch-upp_thread.run
-
-ctxswitch-cfa_coroutine$(EXEEXT):
-	${CC}        ctxswitch/cfa_cor.c   -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-cfa_thread$(EXEEXT):
-	${CC}        ctxswitch/cfa_thrd.c  -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-upp_coroutine$(EXEEXT):
-	u++          ctxswitch/upp_cor.cc  -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-upp_thread$(EXEEXT):
-	u++          ctxswitch/upp_thrd.cc -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-ctxswitch-pthread$(EXEEXT):
-	@BACKEND_CC@ ctxswitch/pthreads.c  -DBENCH_N=50000000  -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex$(EXEEXT) :\
-	mutex-function.run	\
-	mutex-pthread_lock.run	\
-	mutex-upp.run		\
-	mutex-cfa1.run		\
-	mutex-cfa2.run		\
-	mutex-cfa4.run
-
-mutex-function$(EXEEXT):
-	@BACKEND_CC@ mutex/function.c    -DBENCH_N=500000000   -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-pthread_lock$(EXEEXT):
-	@BACKEND_CC@ mutex/pthreads.c    -DBENCH_N=50000000    -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-upp$(EXEEXT):
-	u++          mutex/upp.cc        -DBENCH_N=50000000    -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa1$(EXEEXT):
-	${CC}        mutex/cfa1.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa2$(EXEEXT):
-	${CC}        mutex/cfa2.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-mutex-cfa4$(EXEEXT):
-	${CC}        mutex/cfa4.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal$(EXEEXT) :\
-	signal-upp.run		\
-	signal-cfa1.run		\
-	signal-cfa2.run		\
-	signal-cfa4.run
-
-signal-upp$(EXEEXT):
-	u++          schedint/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa1$(EXEEXT):
-	${CC}        schedint/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa2$(EXEEXT):
-	${CC}        schedint/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-signal-cfa4$(EXEEXT):
-	${CC}        schedint/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor$(EXEEXT) :\
-	waitfor-upp.run		\
-	waitfor-cfa1.run		\
-	waitfor-cfa2.run		\
-	waitfor-cfa4.run
-
-waitfor-upp$(EXEEXT):
-	u++          schedext/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa1$(EXEEXT):
-	${CC}        schedext/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa2$(EXEEXT):
-	${CC}        schedext/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-waitfor-cfa4$(EXEEXT):
-	${CC}        schedext/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation$(EXEEXT) :\
-	creation-pthread.run			\
-	creation-cfa_coroutine.run		\
-	creation-cfa_coroutine_eager.run	\
-	creation-cfa_thread.run			\
-	creation-upp_coroutine.run		\
-	creation-upp_thread.run
-
-creation-cfa_coroutine$(EXEEXT):
-	${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-cfa_coroutine_eager$(EXEEXT):
-	${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
-
-creation-cfa_thread$(EXEEXT):
-	${CC}        creation/cfa_thrd.c  -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-upp_coroutine$(EXEEXT):
-	u++          creation/upp_cor.cc  -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-upp_thread$(EXEEXT):
-	u++          creation/upp_thrd.cc -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-creation-pthread$(EXEEXT):
-	@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000     -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
-
-compile$(EXEEXT) :\
-	compile-array$(EXEEXT)		\
-	compile-attributes$(EXEEXT)	\
-	compile-empty$(EXEEXT)  	\
-	compile-expression$(EXEEXT)	\
-	compile-io$(EXEEXT)		\
-	compile-monitor$(EXEEXT)	\
-	compile-operators$(EXEEXT)	\
-	compile-thread$(EXEEXT)		\
-	compile-typeof$(EXEEXT)		\
-	compile-vector_test$(EXEEXT)
-
-compile-array$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/array.c
-
-compile-attributes$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/attributes.c
-
-compile-empty$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w compile/empty.c
-
-compile-expression$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/expression.c
-
-compile-io$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/io.c
-
-compile-monitor$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/monitor.c
-
-compile-operators$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/operators.c
-
-compile-thread$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/thread.c
-
-compile-typeof$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/typeof.c
-
-compile-vector_test$(EXEEXT):
-	@printf '%20s\t' $(subst compile-,,$@)
-	@/usr/bin/time -f "%E" ${CC} -quiet -fsyntax-only -w ../tests/vector_test.c
-
 %.run : %$(EXEEXT) ${REPEAT}
 	@rm -f .result.log
@@ -630,6 +457,195 @@
 	@rm -f a.out .result.log
 
+%.runquiet :
+	@+make $(basename $@)
+	@./a.out
+	@rm -f a.out
+
+%.make :
+	@printf "${PRINT_FORMAT}" $(basename $(subst compile-,,$@))
+	@+/usr/bin/time -f ${TIME_FORMAT} make $(basename $@) 2>&1
+
 ${REPEAT} :
 	@+make -C ${TOOLSDIR} repeat
+
+jenkins$(EXEEXT):
+	@echo "{"
+	@echo -e '\t"githash": "'${githash}'",'
+	@echo -e '\t"arch": "'   ${arch}   '",'
+	@echo -e '\t"compile": {'
+	@+make compile TIME_FORMAT='%e,' PRINT_FORMAT='\t\t\"%s\" :'
+	@echo -e '\t\t"dummy" : {}'
+	@echo -e '\t},'
+	@echo -e '\t"ctxswitch": {'
+	@echo -en '\t\t"coroutine":'
+	@+make ctxswitch-cfa_coroutine.runquiet
+	@echo -en '\t\t,"thread":'
+	@+make ctxswitch-cfa_thread.runquiet
+	@echo -e '\t},'
+	@echo -e '\t"mutex": ['
+	@echo -en '\t\t'
+	@+make mutex-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make mutex-cfa2.runquiet
+	@echo -e '\t],'
+	@echo -e '\t"scheduling": ['
+	@echo -en '\t\t'
+	@+make signal-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make signal-cfa2.runquiet
+	@echo -en '\t\t,'
+	@+make waitfor-cfa1.runquiet
+	@echo -en '\t\t,'
+	@+make waitfor-cfa2.runquiet
+	@echo -e '\n\t],'
+	@echo -e '\t"epoch": ' $(shell date +%s)
+	@echo "}"
+
+ctxswitch$(EXEEXT): \
+	ctxswitch-pthread.run		\
+	ctxswitch-cfa_coroutine.run	\
+	ctxswitch-cfa_thread.run	\
+	ctxswitch-upp_coroutine.run	\
+	ctxswitch-upp_thread.run
+
+ctxswitch-cfa_coroutine$(EXEEXT):
+	@${CC}        ctxswitch/cfa_cor.c   -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-cfa_thread$(EXEEXT):
+	@${CC}        ctxswitch/cfa_thrd.c  -DBENCH_N=50000000  -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-upp_coroutine$(EXEEXT):
+	@u++          ctxswitch/upp_cor.cc  -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-upp_thread$(EXEEXT):
+	@u++          ctxswitch/upp_thrd.cc -DBENCH_N=50000000  -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+ctxswitch-pthread$(EXEEXT):
+	@@BACKEND_CC@ ctxswitch/pthreads.c  -DBENCH_N=50000000  -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex$(EXEEXT) :\
+	mutex-function.run	\
+	mutex-pthread_lock.run	\
+	mutex-upp.run		\
+	mutex-cfa1.run		\
+	mutex-cfa2.run		\
+	mutex-cfa4.run
+
+mutex-function$(EXEEXT):
+	@@BACKEND_CC@ mutex/function.c    -DBENCH_N=500000000   -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-pthread_lock$(EXEEXT):
+	@@BACKEND_CC@ mutex/pthreads.c    -DBENCH_N=50000000    -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-upp$(EXEEXT):
+	@u++          mutex/upp.cc        -DBENCH_N=50000000    -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-cfa1$(EXEEXT):
+	@${CC}        mutex/cfa1.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-cfa2$(EXEEXT):
+	@${CC}        mutex/cfa2.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+mutex-cfa4$(EXEEXT):
+	@${CC}        mutex/cfa4.c        -DBENCH_N=5000000     -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+signal$(EXEEXT) :\
+	signal-upp.run		\
+	signal-cfa1.run		\
+	signal-cfa2.run		\
+	signal-cfa4.run
+
+signal-upp$(EXEEXT):
+	@u++          schedint/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+signal-cfa1$(EXEEXT):
+	@${CC}        schedint/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+signal-cfa2$(EXEEXT):
+	@${CC}        schedint/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+signal-cfa4$(EXEEXT):
+	@${CC}        schedint/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+waitfor$(EXEEXT) :\
+	waitfor-upp.run		\
+	waitfor-cfa1.run		\
+	waitfor-cfa2.run		\
+	waitfor-cfa4.run
+
+waitfor-upp$(EXEEXT):
+	@u++          schedext/upp.cc     -DBENCH_N=5000000     -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+waitfor-cfa1$(EXEEXT):
+	@${CC}        schedext/cfa1.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+waitfor-cfa2$(EXEEXT):
+	@${CC}        schedext/cfa2.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+waitfor-cfa4$(EXEEXT):
+	@${CC}        schedext/cfa4.c     -DBENCH_N=500000      -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation$(EXEEXT) :\
+	creation-pthread.run			\
+	creation-cfa_coroutine.run		\
+	creation-cfa_coroutine_eager.run	\
+	creation-cfa_thread.run			\
+	creation-upp_coroutine.run		\
+	creation-upp_thread.run
+
+creation-cfa_coroutine$(EXEEXT):
+	@${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-cfa_coroutine_eager$(EXEEXT):
+	@${CC}        creation/cfa_cor.c   -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -DEAGER
+
+creation-cfa_thread$(EXEEXT):
+	@${CC}        creation/cfa_thrd.c  -DBENCH_N=10000000   -I. -nodebug -lrt -quiet @CFA_FLAGS@ ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-upp_coroutine$(EXEEXT):
+	@u++          creation/upp_cor.cc  -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-upp_thread$(EXEEXT):
+	@u++          creation/upp_thrd.cc -DBENCH_N=50000000   -I. -nodebug -lrt -quiet             ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+creation-pthread$(EXEEXT):
+	@@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000     -I. -lrt -pthread                    ${AM_CFLAGS} ${CFLAGS} ${ccflags}
+
+compile$(EXEEXT) :\
+	compile-array.make	\
+	compile-attributes.make	\
+	compile-empty.make  	\
+	compile-expression.make	\
+	compile-io.make		\
+	compile-monitor.make	\
+	compile-operators.make	\
+	compile-typeof.make
+
+compile-array$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/array.c
+
+compile-attributes$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/attributes.c
+
+compile-empty$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w compile/empty.c
+
+compile-expression$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/expression.c
+
+compile-io$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/io.c
+
+compile-monitor$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/monitor.c
+
+compile-operators$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/operators.c
+
+compile-thread$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/thread.c
+
+compile-typeof$(EXEEXT):
+	@${CC} -nodebug -quiet -fsyntax-only -w ../tests/typeof.c
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
Index: src/benchmark/csv-data.c
===================================================================
--- src/benchmark/csv-data.c	(revision 3edc2df79a0bc8f27bb4751b39f173cd147bc079)
+++ src/benchmark/csv-data.c	(revision a5b7905d626e51a2c959ddc46ed61c06d1e970c7)
@@ -28,5 +28,5 @@
 // coroutine context switch
 long long int measure_coroutine() {
-	const unsigned int NoOfTimes = N;
+	const unsigned int NoOfTimes = 50000000;
 	long long int StartTime, EndTime;
 
@@ -43,5 +43,5 @@
 // thread context switch
 long long int measure_thread() {
-	const unsigned int NoOfTimes = N;
+	const unsigned int NoOfTimes = 50000000;
 	long long int StartTime, EndTime;
 
@@ -61,5 +61,5 @@
 
 long long int measure_1_monitor_entry() {
-	const unsigned int NoOfTimes = N;
+	const unsigned int NoOfTimes = 5000000;
 	long long int StartTime, EndTime;
 	mon_t mon;
@@ -79,5 +79,5 @@
 
 long long int measure_2_monitor_entry() {
-	const unsigned int NoOfTimes = N;
+	const unsigned int NoOfTimes = 5000000;
 	long long int StartTime, EndTime;
 	mon_t mon1, mon2;
@@ -94,4 +94,6 @@
 //-----------------------------------------------------------------------------
 // single internal sched entry
+const unsigned int NoOfTimes = 500000;
+
 mon_t mon1;
 
@@ -107,4 +109,5 @@
 
 void side1A( mon_t & mutex a, long long int * out ) {
+	const unsigned int NoOfTimes = 500000;
 	long long int StartTime, EndTime;
 
@@ -112,10 +115,10 @@
 	for( int i = 0;; i++ ) {
 		signal(cond1a);
-		if( i > N ) break;
+		if( i > NoOfTimes ) break;
 		wait(cond1b);
 	}
 	EndTime = Time();
 
-	*out = ( EndTime - StartTime ) / N;
+	*out = ( EndTime - StartTime ) / NoOfTimes;
 }
 
@@ -141,5 +144,5 @@
 
 //-----------------------------------------------------------------------------
-// multi internal sched entry
+// multi internal sched
 mon_t mon2;
 
@@ -155,4 +158,5 @@
 
 void side2A( mon_t & mutex a, mon_t & mutex b, long long int * out ) {
+	const unsigned int NoOfTimes = 500000;
 	long long int StartTime, EndTime;
 
@@ -160,10 +164,10 @@
 	for( int i = 0;; i++ ) {
 		signal(cond2a);
-		if( i > N ) break;
+		if( i > NoOfTimes ) break;
 		wait(cond2b);
 	}
 	EndTime = Time();
 
-	*out = ( EndTime - StartTime ) / N;
+	*out = ( EndTime - StartTime ) / NoOfTimes;
 }
 
@@ -189,13 +193,84 @@
 
 //-----------------------------------------------------------------------------
+// single external sched
+
+volatile int go = 0;
+
+void __attribute__((noinline)) call( mon_t & mutex m1 ) {}
+
+long long int  __attribute__((noinline)) wait( mon_t & mutex m1 ) {
+	go = 1;
+	const unsigned int NoOfTimes = 5000000;
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for (size_t i = 0; i < NoOfTimes; i++) {
+		waitfor(call, m1);
+	}
+
+	EndTime = Time();
+	go = 0;
+	return ( EndTime - StartTime ) / NoOfTimes;
+}
+
+thread thrd3 {};
+void ^?{}( thrd3 & mutex this ) {}
+void main( thrd3 & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(mon1); }
+
+}
+
+long long int measure_1_sched_ext() {
+	go = 0;
+	thrd3 t;
+	return wait(mon1);
+}
+
+//-----------------------------------------------------------------------------
+// multi external sched
+
+void __attribute__((noinline)) call( mon_t & mutex m1, mon_t & mutex m2 ) {}
+
+long long int  __attribute__((noinline)) wait( mon_t & mutex m1, mon_t & mutex m2 ) {
+	go = 1;
+	const unsigned int NoOfTimes = 5000000;
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for (size_t i = 0; i < NoOfTimes; i++) {
+		waitfor(call, m1, m2);
+	}
+
+	EndTime = Time();
+	go = 0;
+	return ( EndTime - StartTime ) / NoOfTimes;
+}
+
+thread thrd4 {};
+void ^?{}( thrd4 & mutex this ) {}
+void main( thrd4 & this ) {
+	while(go == 0) { yield(); }
+	while(go == 1) { call(mon1, mon2); }
+
+}
+
+long long int measure_2_sched_ext() {
+	go = 0;
+	thrd3 t;
+	return wait(mon1, mon2);
+}
+
+//-----------------------------------------------------------------------------
 // main loop
 int main()
 {
-	sout | time(NULL) | ',';
-	sout | measure_coroutine() | ',';
-	sout | measure_thread() | ',';
-	sout | measure_1_monitor_entry() | ',';
-	sout | measure_2_monitor_entry() | ',';
-	sout | measure_1_sched_int() | ',';
-	sout | measure_2_sched_int() | endl;
-}
+	sout | "\tepoch:" | time(NULL) | ',' | endl;
+	sout | "\tctxswitch: {" | endl;
+	sout | "\t\tcoroutine: "| measure_coroutine() | ',' | endl;
+	sout | "\t\tthread:" | measure_thread() | ',' | endl;
+	sout | "\t}," | endl;
+	sout | "\tmutex: [" 	| measure_1_monitor_entry() 	| ',' | measure_2_monitor_entry() 	| "]," | endl;
+	sout | "\tscheduling: ["| measure_1_sched_int() 	| ',' | measure_2_sched_int() 	| ','  |
+					  measure_1_sched_ext() 	| ',' | measure_2_sched_ext() 	| "]," | endl;
+}
