Index: src/benchmark/csv-data.c
===================================================================
--- src/benchmark/csv-data.c	(revision bd951f7a08aaeaa715017f38d25b15e941c3bb12)
+++ src/benchmark/csv-data.c	(revision 19801aa0dcfe89d8ca8f114f1b8f4d0ec4642a29)
@@ -100,4 +100,102 @@
 }
 
+//-----------------------------------------------------------------------------
+// single internal sched entry
+mon_t mon1;
+
+condition cond1a; 
+condition cond1b;
+
+thread thrd1a { long long int * out; };
+thread thrd1b {};
+
+void ?{}( thrd1a * this, long long int * out ) {
+	this->out = out;
+}
+
+void side1A( mon_t * mutex a, long long int * out ) {
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for( int i = 0;; i++ ) {
+		signal(&cond1a);
+		if( i > N ) break;
+		wait(&cond1b);
+	}
+	EndTime = Time();
+
+	*out = ( EndTime - StartTime ) / N;
+}
+
+void side1B( mon_t * mutex a ) {
+	for( int i = 0;; i++ ) {
+		signal(&cond1b);
+		if( i > N ) break;
+		wait(&cond1a);
+	}
+}
+
+void main( thrd1a * this ) { side1A( &mon1, this->out ); }
+void main( thrd1b * this ) { side1B( &mon1 ); }
+
+long long int measure_1_sched_int() {
+	long long int t;
+	{
+		thrd1a a = { &t };
+		thrd1b b;
+	}
+	return t;
+}
+
+//-----------------------------------------------------------------------------
+// multi internal sched entry
+mon_t mon2;
+
+condition cond2a; 
+condition cond2b;
+
+thread thrd2a { long long int * out; };
+thread thrd2b {};
+
+void ?{}( thrd2a * this, long long int * out ) {
+	this->out = out;
+}
+
+void side2A( mon_t * mutex a, mon_t * mutex b, long long int * out ) {
+	long long int StartTime, EndTime;
+
+	StartTime = Time();
+	for( int i = 0;; i++ ) {
+		signal(&cond2a);
+		if( i > N ) break;
+		wait(&cond2b);
+	}
+	EndTime = Time();
+
+	*out = ( EndTime - StartTime ) / N;
+}
+
+void side2B( mon_t * mutex a, mon_t * mutex b ) {
+	for( int i = 0;; i++ ) {
+		signal(&cond2b);
+		if( i > N ) break;
+		wait(&cond2a);
+	}
+}
+
+void main( thrd2a * this ) { side2A( &mon1, &mon2, this->out ); }
+void main( thrd2b * this ) { side2B( &mon1, &mon2 ); }
+
+long long int measure_2_sched_int() {
+	long long int t;
+	{
+		thrd2a a = { &t };
+		thrd2b b;
+	}
+	return t;
+}
+
+//-----------------------------------------------------------------------------
+// main loop
 int main()
 {
@@ -106,4 +204,6 @@
 	sout | measure_thread() | ',';
 	sout | measure_1_monitor_entry() | ',';
-	sout | measure_2_monitor_entry() | endl;
-}
+	sout | measure_2_monitor_entry() | ',';
+	sout | measure_1_sched_int() | ',';
+	sout | measure_2_sched_int() | endl;
+}
