Index: src/tests/concurrent/coroutineYield.c
===================================================================
--- src/tests/concurrent/coroutineYield.c	(revision d35e796665a4986536d9b811a82031f9eb52bc46)
+++ src/tests/concurrent/coroutineYield.c	(revision ef952d75fb8af3f290165a8dd9ce53ba33808d1e)
@@ -5,4 +5,5 @@
 #include <time>
 
+#define __kick_rate 150000ul
 #include "long_tests.h"
 
@@ -25,7 +26,11 @@
 void main(Coroutine& this) {
 	while(true) {
-		sout | "Coroutine 1" | endl;
+		#if !defined(TEST_FOREVER)
+			sout | "Coroutine 1" | endl;
+		#endif
 		yield();
-		sout | "Coroutine 2" | endl;
+		#if !defined(TEST_FOREVER)
+			sout | "Coroutine 2" | endl;
+		#endif
 		suspend();
 	}
@@ -36,7 +41,11 @@
 	Coroutine c;
 	for(int i = 0; TEST(i < N); i++) {
-		sout | "Thread 1" | endl;
+		#if !defined(TEST_FOREVER)
+			sout | "Thread 1" | endl;
+		#endif
 		resume(c);
-		sout | "Thread 2" | endl;
+		#if !defined(TEST_FOREVER)
+			sout | "Thread 2" | endl;
+		#endif
 		yield();
 		KICK_WATCHDOG;
Index: src/tests/concurrent/signal/disjoint.c
===================================================================
--- src/tests/concurrent/signal/disjoint.c	(revision d35e796665a4986536d9b811a82031f9eb52bc46)
+++ src/tests/concurrent/signal/disjoint.c	(revision ef952d75fb8af3f290165a8dd9ce53ba33808d1e)
@@ -69,7 +69,8 @@
 	}
 
-	d.counter++;
-
-	if( (d.counter % 1000) == 0 ) sout | d.counter | endl;
+	#if !defined(TEST_FOREVER)
+		d.counter++;
+		if( (d.counter % 1000) == 0 ) sout | d.counter | endl;
+	#endif
 
 	return TEST(d.counter < N);
Index: src/tests/concurrent/signal/wait.c
===================================================================
--- src/tests/concurrent/signal/wait.c	(revision d35e796665a4986536d9b811a82031f9eb52bc46)
+++ src/tests/concurrent/signal/wait.c	(revision ef952d75fb8af3f290165a8dd9ce53ba33808d1e)
@@ -12,4 +12,5 @@
 #include <time>
 
+#define __kick_rate 12000ul
 #include "long_tests.h"
 
Index: src/tests/long_tests.h
===================================================================
--- src/tests/long_tests.h	(revision d35e796665a4986536d9b811a82031f9eb52bc46)
+++ src/tests/long_tests.h	(revision ef952d75fb8af3f290165a8dd9ce53ba33808d1e)
@@ -4,11 +4,18 @@
 
 #if   defined(TEST_FOREVER)
+
+static unsigned long long __kick_count = 0;
+#if !defined(__kick_rate)
+#define __kick_rate 5000ul
+#endif
+
 #define TEST(x) 1
-#define KICK_WATCHDOG write(STDOUT_FILENO, ".", 1)
-#elif defined(TEST_LONG)
+#define KICK_WATCHDOG do { __kick_count++; if(__kick_count > __kick_rate) { write(STDOUT_FILENO, ".", 1); __kick_count = 0; } } while(0)
+
+
+#else
+
 #define TEST(x) x
 #define KICK_WATCHDOG
-#else
-#define TEST(x) x
-#define KICK_WATCHDOG
+
 #endif
Index: src/tests/preempt_longrun/enter.c
===================================================================
--- src/tests/preempt_longrun/enter.c	(revision d35e796665a4986536d9b811a82031f9eb52bc46)
+++ src/tests/preempt_longrun/enter.c	(revision ef952d75fb8af3f290165a8dd9ce53ba33808d1e)
@@ -4,4 +4,5 @@
 #include <time>
 
+#define __kick_rate 75000ul
 #include "long_tests.h"
 
Index: src/tests/preempt_longrun/enter3.c
===================================================================
--- src/tests/preempt_longrun/enter3.c	(revision d35e796665a4986536d9b811a82031f9eb52bc46)
+++ src/tests/preempt_longrun/enter3.c	(revision ef952d75fb8af3f290165a8dd9ce53ba33808d1e)
@@ -4,4 +4,5 @@
 #include <time>
 
+#define __kick_rate 75000ul
 #include "long_tests.h"
 
Index: src/tests/preempt_longrun/stack.c
===================================================================
--- src/tests/preempt_longrun/stack.c	(revision d35e796665a4986536d9b811a82031f9eb52bc46)
+++ src/tests/preempt_longrun/stack.c	(revision ef952d75fb8af3f290165a8dd9ce53ba33808d1e)
@@ -4,4 +4,5 @@
 #include <time>
 
+#define __kick_rate 5000000ul
 #include "long_tests.h"
 
@@ -17,15 +18,17 @@
 
 void main(worker_t & this) {
-	volatile long long p = 5_021_609ul;
-	volatile long long a = 326_417ul;
-	volatile long long n = 1l;
-	for (volatile long long i = 0; TEST(i < p); i++) {
-		n *= a;
-		n %= p;
-		KICK_WATCHDOG;
-	}
+	while(TEST(0)) {
+		volatile long long p = 5_021_609ul;
+		volatile long long a = 326_417ul;
+		volatile long long n = 1l;
+		for (volatile long long i = 0; i < p; i++) {
+			n *= a;
+			n %= p;
+			KICK_WATCHDOG;
+		}
 
-	if( !TEST(n == a) ) {
-		abort();
+		if( !TEST(n == a) ) {
+			abort();
+		}
 	}
 }
Index: src/tests/preempt_longrun/yield.c
===================================================================
--- src/tests/preempt_longrun/yield.c	(revision d35e796665a4986536d9b811a82031f9eb52bc46)
+++ src/tests/preempt_longrun/yield.c	(revision ef952d75fb8af3f290165a8dd9ce53ba33808d1e)
@@ -3,4 +3,5 @@
 #include <time>
 
+#define __kick_rate 550000ul
 #include "long_tests.h"
 
