Index: src/tests/preempt_longrun/Makefile.am
===================================================================
--- src/tests/preempt_longrun/Makefile.am	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/preempt_longrun/Makefile.am	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -10,6 +10,6 @@
 ## Author           : Thierry Delisle
 ## Created On       : Fri Jun 16 10:57:34 2017
-## Last Modified By : 
-## Last Modified On : 
+## Last Modified By :
+## Last Modified On :
 ## Update Count     : 0
 ###############################################################################
@@ -17,5 +17,5 @@
 repeats=10
 max_time=30
-preempt=10_000ul
+preempt=1_000ul
 
 REPEAT = ${abs_top_srcdir}/tools/repeat -s
@@ -25,5 +25,5 @@
 CC = @CFA_BINDIR@/@CFA_NAME@
 
-TESTS = barge block create disjoint processor stack wait yield
+TESTS = barge block create disjoint enter enter3 processor stack wait yield
 
 .INTERMEDIATE: ${TESTS}
Index: src/tests/preempt_longrun/Makefile.in
===================================================================
--- src/tests/preempt_longrun/Makefile.in	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/preempt_longrun/Makefile.in	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -450,8 +450,8 @@
 repeats = 10
 max_time = 30
-preempt = 10_000ul
+preempt = 1_000ul
 REPEAT = ${abs_top_srcdir}/tools/repeat -s
 BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ -debug -O2 -DPREEMPTION_RATE=${preempt}
-TESTS = barge block create disjoint processor stack wait yield
+TESTS = barge block create disjoint enter enter3 processor stack wait yield
 all: all-am
 
@@ -663,4 +663,18 @@
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+enter.log: enter
+	@p='enter'; \
+	b='enter'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+enter3.log: enter3
+	@p='enter3'; \
+	b='enter3'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 processor.log: processor
 	@p='processor'; \
Index: src/tests/preempt_longrun/create.c
===================================================================
--- src/tests/preempt_longrun/create.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/preempt_longrun/create.c	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -15,5 +15,5 @@
 
 int main(int argc, char* argv[]) {
-	for(int i = 0; i < 100_000ul; i++) {
+	for(int i = 0; i < 250_000ul; i++) {
 		Worker w;
 	}
Index: src/tests/preempt_longrun/enter.c
===================================================================
--- src/tests/preempt_longrun/enter.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/preempt_longrun/enter.c	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -4,5 +4,5 @@
 
 #undef N
-static const unsigned long N  = 50_000ul;
+static const unsigned long N  = 70_000ul;
 
 #ifndef PREEMPTION_RATE
Index: src/tests/preempt_longrun/processor.c
===================================================================
--- src/tests/preempt_longrun/processor.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/preempt_longrun/processor.c	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -15,5 +15,5 @@
 
 int main(int argc, char* argv[]) {
-	for(int i = 0; i < 100_000ul; i++) {
+	for(int i = 0; i < 10_000ul; i++) {
 		processor p;
 	}
Index: src/tests/preempt_longrun/yield.c
===================================================================
--- src/tests/preempt_longrun/yield.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/preempt_longrun/yield.c	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -13,5 +13,5 @@
 
 void main(Worker * this) {
-	for(int i = 0; i < 100_000ul; i++) {
+	for(int i = 0; i < 325_000ul; i++) {
 		yield();
 	}
Index: src/tests/sched-int-block.c
===================================================================
--- src/tests/sched-int-block.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/sched-int-block.c	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -6,5 +6,5 @@
 
 #ifndef N
-#define N 100_000
+#define N 10_000
 #endif
 
Index: src/tests/sched-int-wait.c
===================================================================
--- src/tests/sched-int-wait.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/sched-int-wait.c	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -50,14 +50,14 @@
 		unsigned action = (unsigned)rand48() % 4;
 		switch( action ) {
-			case 0: 
+			case 0:
 				signal( &condABC, &globalA, &globalB, &globalC );
 				break;
-			case 1: 
+			case 1:
 				signal( &condAB , &globalA, &globalB );
 				break;
-			case 2: 
+			case 2:
 				signal( &condBC , &globalB, &globalC );
 				break;
-			case 3: 
+			case 3:
 				signal( &condAC , &globalA, &globalC );
 				break;
@@ -67,5 +67,5 @@
 		}
 		yield();
-	}	
+	}
 }
 
Index: src/tests/thread.c
===================================================================
--- src/tests/thread.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/thread.c	(revision f3c17371d46f1b32ef02e76b36b88a71b5627031)
@@ -4,15 +4,9 @@
 #include <thread>
 
-// thread First;
-// void main(First* this);
+thread First  { semaphore* lock; };
+thread Second { semaphore* lock; };
 
-// thread Second;
-// void main(Second* this);
-
-thread First  { signal_once* lock; };
-thread Second { signal_once* lock; };
-
-void ?{}( First * this, signal_once* lock ) { this->lock = lock; }
-void ?{}( Second * this, signal_once* lock ) { this->lock = lock; }
+void ?{}( First * this, semaphore* lock ) { this->lock = lock; }
+void ?{}( Second * this, semaphore* lock ) { this->lock = lock; }
 
 void main(First* this) {
@@ -21,9 +15,9 @@
 		yield();
 	}
-	signal(this->lock);
+	V(this->lock);
 }
 
 void main(Second* this) {
-	wait(this->lock);
+	P(this->lock);
 	for(int i = 0; i < 10; i++) {
 		sout | "Second : Suspend No." | i + 1 | endl;
@@ -34,5 +28,5 @@
 
 int main(int argc, char* argv[]) {
-	signal_once lock;
+	semaphore lock = { 0 };
 	sout | "User main begin" | endl;
 	{
