Index: benchmark/schedint/JavaThread.java
===================================================================
--- benchmark/schedint/JavaThread.java	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/schedint/JavaThread.java	(revision b4107c815918e9d1300f3381d29c2a863abf7de8)
@@ -49,8 +49,8 @@
 	static int x = 2;
 
-	static private final int NoOfTimes = Integer.parseInt("1000000") ;
+	static private int times = Integer.parseInt("1000000");
 
 	public static void helper( Monitor m ) throws InterruptedException {
-		for(int i = 1; i <= NoOfTimes; i += 1) {
+		for(int i = 1; i <= times; i += 1) {
 			m.wait();		// relase monitor lock
 			m.next = true;
@@ -72,7 +72,10 @@
 		Monitor.go = false;
 		s.join();
-		System.out.println( (end - start) / NoOfTimes);
+		System.out.println( (end - start) / times);
 	}
 	public static void main(String[] args) throws InterruptedException {
+		if ( args.length > 2 ) System.exit( 1 );
+		if ( args.length == 2 ) { times = Integer.parseInt(args[1]); }
+
 		for (int n = Integer.parseInt("5"); --n >= 0 ; ) { 
 			InnerMain();
@@ -83,2 +86,6 @@
 	}
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/schedint/cfa1.cfa
===================================================================
--- benchmark/schedint/cfa1.cfa	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/schedint/cfa1.cfa	(revision b4107c815918e9d1300f3381d29c2a863abf7de8)
@@ -6,6 +6,4 @@
 #include "bench.h"
 
-int argc;
-char** argv;
 volatile int go = 0;
 
@@ -26,6 +24,5 @@
 		result
 	)
-
-	printf("%g\n", result);
+	printf( "%g\n", result );
 	go = 0;
 	return 0;
@@ -40,6 +37,11 @@
 }
 
-int main(__attribute__((unused)) int argc, __attribute__((unused)) char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	T t;
 	return wait(m1);
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/schedint/cfa2.cfa
===================================================================
--- benchmark/schedint/cfa2.cfa	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/schedint/cfa2.cfa	(revision b4107c815918e9d1300f3381d29c2a863abf7de8)
@@ -6,6 +6,4 @@
 #include "bench.h"
 
-int argc;
-char** argv;
 volatile int go = 0;
 
@@ -26,6 +24,5 @@
 		result
 	)
-
-	printf("%g\n", result);
+	printf( "%g\n", result );
 	go = 0;
 	return 0;
@@ -40,6 +37,11 @@
 }
 
-int main(__attribute__((unused)) int argc, __attribute__((unused)) char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	T t;
 	return wait(m1, m2);
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/schedint/cfa4.cfa
===================================================================
--- benchmark/schedint/cfa4.cfa	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/schedint/cfa4.cfa	(revision b4107c815918e9d1300f3381d29c2a863abf7de8)
@@ -6,6 +6,4 @@
 #include "bench.h"
 
-int argc;
-char** argv;
 volatile int go = 0;
 
@@ -26,6 +24,5 @@
 		result
 	)
-
-	printf("%g\n", result);
+	printf( "%g\n", result );
 	go = 0;
 	return 0;
@@ -40,6 +37,11 @@
 }
 
-int main(__attribute__((unused)) int argc, __attribute__((unused)) char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	T t;
 	return wait(m1, m2, m3, m4);
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/schedint/pthreads.c
===================================================================
--- benchmark/schedint/pthreads.c	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/schedint/pthreads.c	(revision b4107c815918e9d1300f3381d29c2a863abf7de8)
@@ -4,6 +4,4 @@
 #include "bench.h"
 
-int argc;
-char** argv;
 volatile int go = 0;
 
@@ -21,11 +19,10 @@
 	go = 1;
 	BENCH(
-		for (size_t i = 0; i < n; i++) {
+		for (size_t i = 0; i < times; i++) {
 			pthread_cond_wait(&c, &m);
 		},
 		result
 	)
-
-	printf("%g\n", result);
+	printf( "%g\n", result );
 	go = 0;
 	pthread_mutex_unlock(&m);
@@ -39,5 +36,6 @@
 }
 
-int main(__attribute__((unused)) int argc, __attribute__((unused)) char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	pthread_t thread;
 	if (pthread_create(&thread, NULL, thread_main, NULL) < 0) {
@@ -50,4 +48,7 @@
 		return 1;
 	}
-	return 0;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
Index: benchmark/schedint/rust.rs
===================================================================
--- benchmark/schedint/rust.rs	(revision b4107c815918e9d1300f3381d29c2a863abf7de8)
+++ benchmark/schedint/rust.rs	(revision b4107c815918e9d1300f3381d29c2a863abf7de8)
@@ -0,0 +1,45 @@
+use std::env;
+use std::process;
+use std::thread;
+use std::sync::{Arc, Mutex, Condvar};
+use std::time::Instant;
+
+fn main() {
+	let mut times : u32 = 500000;
+	let args: Vec<String> = env::args().collect();
+	if args.len() > 2 { process::exit( 1 ); }
+	if args.len() == 2 { times = args[1].parse().unwrap(); }
+
+	let m = Arc::new(Mutex::new(0));
+	let c = Arc::new(Condvar::new());
+
+	let m2 = Arc::clone(&m);
+	let c2 = Arc::clone(&c);
+
+	let th = thread::spawn( move || {
+		while *m2.lock().unwrap() == 0 {
+			thread::yield_now();
+		}
+		let start = Instant::now();
+		while *m2.lock().unwrap() == 1 {
+			c2.notify_one();
+		}
+		let duration = start.elapsed() / times;
+		println!( "{:?}", duration.as_nanos() );
+	});
+ 	{
+		let mut sc = m.lock().unwrap();
+		*sc = 1;
+		for _ in 1..times {
+			sc = c.wait(sc).unwrap();
+		}
+		*sc = 0;
+	}
+	th.join().unwrap();
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "rustc -C opt-level=3 rust.rs" //
+// End: //
+
Index: benchmark/schedint/upp.cc
===================================================================
--- benchmark/schedint/upp.cc	(revision be53b87bb8b688d529b9f3ca8a4a7bfd47305629)
+++ benchmark/schedint/upp.cc	(revision b4107c815918e9d1300f3381d29c2a863abf7de8)
@@ -3,6 +3,4 @@
 #include "bench.h"
 
-int argc;
-char** argv;
 volatile int go = 0;
 
@@ -22,6 +20,5 @@
 			result
 		)
-
-		printf("%g\n", result);
+		printf( "%g\n", result );
 		go = 0;
 		return 0;
@@ -39,6 +36,11 @@
 };
 
-int main(__attribute__((unused)) int argc, __attribute__((unused)) char* argv[]) {
+int main( int argc, char * argv[] ) {
+	BENCH_START()
 	T t;
 	return m.wait();
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// End: //
