Index: src/benchmark/Makefile.am
===================================================================
--- src/benchmark/Makefile.am	(revision 63958172b04a92229dd3d55d9e3a2d04452e9c65)
+++ src/benchmark/Makefile.am	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
@@ -50,17 +50,17 @@
 
 ctxswitch-cfa_coroutine$(EXEEXT):
-	${AM_V_CC}${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet -DBENCH_N=50000000 ctxswitch/cfa_cor.c
+	${CC}        ctxswitch/cfa_cor.c   -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 ctxswitch-cfa_thread$(EXEEXT):
-	${AM_V_CC}${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet -DBENCH_N=50000000 ctxswitch/cfa_thrd.c
+	${CC}        ctxswitch/cfa_thrd.c  -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 ctxswitch-upp_coroutine$(EXEEXT):
-	${AM_V_CC}u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -quiet -DBENCH_N=50000000 ctxswitch/upp_cor.cc
+	u++          ctxswitch/upp_cor.cc  -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
 
 ctxswitch-upp_thread$(EXEEXT):
-	${AM_V_CC}u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -quiet -DBENCH_N=50000000 ctxswitch/upp_thrd.cc
+	u++          ctxswitch/upp_thrd.cc -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
 
 ctxswitch-pthread$(EXEEXT):
-	${AM_V_CC}@BACKEND_CC@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread -DBENCH_N=50000000 ctxswitch/pthreads.c
+	@BACKEND_CC@ ctxswitch/pthreads.c  -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread
 
 ## =========================================================================================================
@@ -73,17 +73,44 @@
 
 creation-cfa_coroutine$(EXEEXT):
-	${AM_V_CC}${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet -DBENCH_N=500000000 creation/cfa_cor.c
+	${CC}        creation/cfa_cor.c   -DBENCH_N=500000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 creation-cfa_thread$(EXEEXT):
-	${AM_V_CC}${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet -DBENCH_N=10000000 creation/cfa_thrd.c
+	${CC}        creation/cfa_thrd.c  -DBENCH_N=10000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 creation-upp_coroutine$(EXEEXT):
-	${AM_V_CC}u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -quiet -DBENCH_N=50000000 creation/upp_cor.cc
+	u++          creation/upp_cor.cc  -DBENCH_N=50000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
 
 creation-upp_thread$(EXEEXT):
-	${AM_V_CC}u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -quiet -DBENCH_N=50000000 creation/upp_thrd.cc
+	u++          creation/upp_thrd.cc -DBENCH_N=50000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
 
 creation-pthread$(EXEEXT):
-	${AM_V_CC}@BACKEND_CC@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread -DBENCH_N=250000 creation/pthreads.c
+	@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000    ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread
+
+## =========================================================================================================
+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 ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt
+
+mutex-pthread_lock$(EXEEXT):
+	@BACKEND_CC@ mutex/pthreads.c -DBENCH_N=50000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread
+
+mutex-upp$(EXEEXT):
+	u++          mutex/upp.cc     -DBENCH_N=50000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
+
+mutex-cfa1$(EXEEXT):
+	${CC}        mutex/cfa1.c     -DBENCH_N=5000000   ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
+
+mutex-cfa2$(EXEEXT):
+	${CC}        mutex/cfa2.c     -DBENCH_N=5000000   ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
+
+mutex-cfa4$(EXEEXT):
+	${CC}        mutex/cfa4.c     -DBENCH_N=5000000   ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 ## =========================================================================================================
Index: src/benchmark/Makefile.in
===================================================================
--- src/benchmark/Makefile.in	(revision 63958172b04a92229dd3d55d9e3a2d04452e9c65)
+++ src/benchmark/Makefile.in	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
@@ -458,46 +458,72 @@
 
 ctxswitch$(EXEEXT): \
-	ctxswitch-cfa_coroutine.run 	\
-	ctxswitch-cfa_thread.run 	\
-	ctxswitch-upp_coroutine.run 	\
-	ctxswitch-upp_thread.run 	\
-	ctxswitch-pthread.run
+	ctxswitch-pthread.run		\
+	ctxswitch-cfa_coroutine.run	\
+	ctxswitch-cfa_thread.run	\
+	ctxswitch-upp_coroutine.run	\
+	ctxswitch-upp_thread.run
 
 ctxswitch-cfa_coroutine$(EXEEXT):
-	${AM_V_CC}${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet -DBENCH_N=50000000 ctxswitch/cfa_cor.c
+	${CC}        ctxswitch/cfa_cor.c   -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 ctxswitch-cfa_thread$(EXEEXT):
-	${AM_V_CC}${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet -DBENCH_N=50000000 ctxswitch/cfa_thrd.c
+	${CC}        ctxswitch/cfa_thrd.c  -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 ctxswitch-upp_coroutine$(EXEEXT):
-	${AM_V_CC}u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -quiet -DBENCH_N=50000000 ctxswitch/upp_cor.cc
+	u++          ctxswitch/upp_cor.cc  -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
 
 ctxswitch-upp_thread$(EXEEXT):
-	${AM_V_CC}u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -quiet -DBENCH_N=50000000 ctxswitch/upp_thrd.cc
+	u++          ctxswitch/upp_thrd.cc -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
 
 ctxswitch-pthread$(EXEEXT):
-	${AM_V_CC}@BACKEND_CC@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread -DBENCH_N=50000000 ctxswitch/pthreads.c
+	@BACKEND_CC@ ctxswitch/pthreads.c  -DBENCH_N=50000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread
 
 creation$(EXEEXT) :\
 	creation-pthread.run		\
-	creation-cfa_coroutine.run 	\
-	creation-cfa_thread.run 	\
-	creation-upp_coroutine.run 	\
+	creation-cfa_coroutine.run	\
+	creation-cfa_thread.run		\
+	creation-upp_coroutine.run	\
 	creation-upp_thread.run
 
 creation-cfa_coroutine$(EXEEXT):
-	${AM_V_CC}${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet -DBENCH_N=500000000 creation/cfa_cor.c
+	${CC}        creation/cfa_cor.c   -DBENCH_N=500000000 ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 creation-cfa_thread$(EXEEXT):
-	${AM_V_CC}${CC} ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet -DBENCH_N=10000000 creation/cfa_thrd.c
+	${CC}        creation/cfa_thrd.c  -DBENCH_N=10000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 creation-upp_coroutine$(EXEEXT):
-	${AM_V_CC}u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -quiet -DBENCH_N=50000000 creation/upp_cor.cc
+	u++          creation/upp_cor.cc  -DBENCH_N=50000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
 
 creation-upp_thread$(EXEEXT):
-	${AM_V_CC}u++ ${AM_CFLAGS} ${CFLAGS} ${ccflags} ${ccflags} -I. -nodebug -lrt -quiet -DBENCH_N=50000000 creation/upp_thrd.cc
+	u++          creation/upp_thrd.cc -DBENCH_N=50000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
 
 creation-pthread$(EXEEXT):
-	${AM_V_CC}@BACKEND_CC@ ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread -DBENCH_N=250000 creation/pthreads.c
+	@BACKEND_CC@ creation/pthreads.c  -DBENCH_N=250000    ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread
+
+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 ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt
+
+mutex-pthread_lock$(EXEEXT):
+	@BACKEND_CC@ mutex/pthreads.c -DBENCH_N=50000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -lrt -pthread
+
+mutex-upp$(EXEEXT):
+	u++          mutex/upp.cc     -DBENCH_N=50000000  ${AM_CFLAGS} ${CFLAGS} ${ccflags} -I. -nodebug -lrt -quiet
+
+mutex-cfa1$(EXEEXT):
+	${CC}        mutex/cfa1.c     -DBENCH_N=5000000   ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
+
+mutex-cfa2$(EXEEXT):
+	${CC}        mutex/cfa2.c     -DBENCH_N=5000000   ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
+
+mutex-cfa4$(EXEEXT):
+	${CC}        mutex/cfa4.c     -DBENCH_N=5000000   ${AM_CFLAGS} ${CFLAGS} ${ccflags} @CFA_FLAGS@ -I. -nodebug -lrt -quiet
 
 sched-int$(EXEEXT):
Index: src/benchmark/mutex/cfa1.c
===================================================================
--- src/benchmark/mutex/cfa1.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
+++ src/benchmark/mutex/cfa1.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
@@ -0,0 +1,24 @@
+#include <monitor>
+#include <stdio.h>
+
+#include "bench.h"
+
+volatile unsigned long int counter = 0;
+
+monitor M {};
+
+void __attribute__((noinline)) call( M & mutex m ) {
+	counter++;
+}
+
+int main(int argc, char* argv[]) {
+	M m;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: src/benchmark/mutex/cfa2.c
===================================================================
--- src/benchmark/mutex/cfa2.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
+++ src/benchmark/mutex/cfa2.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
@@ -0,0 +1,24 @@
+#include <monitor>
+#include <stdio.h>
+
+#include "bench.h"
+
+volatile unsigned long int counter = 0;
+
+monitor M {};
+
+void __attribute__((noinline)) call( M & mutex m1, M & mutex m2 ) {
+	counter++;
+}
+
+int main(int argc, char* argv[]) {
+	M m1, m2;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m1, m2);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: src/benchmark/mutex/cfa4.c
===================================================================
--- src/benchmark/mutex/cfa4.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
+++ src/benchmark/mutex/cfa4.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
@@ -0,0 +1,24 @@
+#include <monitor>
+#include <stdio.h>
+
+#include "bench.h"
+
+volatile unsigned long int counter = 0;
+
+monitor M {};
+
+void __attribute__((noinline)) call( M & mutex m1, M & mutex m2, M & mutex m3, M & mutex m4 ) {
+	counter++;
+}
+
+int main(int argc, char* argv[]) {
+	M m1, m2, m3, m4;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call(m1, m2, m3, m4);
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: src/benchmark/mutex/function.c
===================================================================
--- src/benchmark/mutex/function.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
+++ src/benchmark/mutex/function.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+#include "bench.h"
+
+volatile unsigned long int counter = 0;
+
+void __attribute__((noinline)) call() {
+	counter++;
+}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: src/benchmark/mutex/pthreads.c
===================================================================
--- src/benchmark/mutex/pthreads.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
+++ src/benchmark/mutex/pthreads.c	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
@@ -0,0 +1,25 @@
+#include <pthread.h>
+#include <stdio.h>
+
+#include "bench.h"
+
+volatile unsigned long int counter = 0;
+
+pthread_mutex_t mutex;
+
+void __attribute__((noinline)) call() {
+	 pthread_mutex_lock  (&mutex);
+	 counter++;
+	 pthread_mutex_unlock(&mutex);
+}
+
+int main(int argc, char* argv[]) {
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			call();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
Index: src/benchmark/mutex/upp.cc
===================================================================
--- src/benchmark/mutex/upp.cc	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
+++ src/benchmark/mutex/upp.cc	(revision f54a0abcaaf8eadcebe1c9d1f9bfb8ba7387cc35)
@@ -0,0 +1,24 @@
+#include <cstdio>
+
+#include "bench.h"
+
+volatile unsigned long int counter = 0;
+
+_Monitor MyMonitor {
+public:
+	void __attribute__((noinline)) call() {
+		counter++;
+	}
+};
+
+int main(int argc, char* argv[]) {
+	MyMonitor m;
+	BENCH(
+		for (size_t i = 0; i < n; i++) {
+			m.call();
+		},
+		result
+	)
+
+	printf("%llu\n", result);
+}
