Index: src/tests/preempt_longrun/enter.c
===================================================================
--- src/tests/preempt_longrun/enter.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/preempt_longrun/enter.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
@@ -0,0 +1,35 @@
+#include <kernel>
+#include <monitor>
+#include <thread>
+
+#undef N
+static const unsigned long N  = 50_000ul;
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10_000ul
+#endif
+
+unsigned int default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+monitor mon_t {};
+
+mon_t mon;
+
+void foo( mon_t * mutex this ) {}
+
+thread worker_t {};
+
+void main( worker_t * this ) {
+	for( unsigned long i = 0; i < N; i++ ) {
+		foo( &mon );
+	}
+}
+
+int main(int argc, char * argv[] ) {
+	processor p;
+	{
+		worker_t w[7];
+	}
+}
Index: src/tests/preempt_longrun/enter3.c
===================================================================
--- src/tests/preempt_longrun/enter3.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
+++ src/tests/preempt_longrun/enter3.c	(revision 955d27e996e9ecc4ecaf618a2eb36f76d284237b)
@@ -0,0 +1,35 @@
+#include <kernel>
+#include <monitor>
+#include <thread>
+
+#undef N
+static const unsigned long N  = 50_000ul;
+
+#ifndef PREEMPTION_RATE
+#define PREEMPTION_RATE 10_000ul
+#endif
+
+unsigned int default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+monitor mon_t {};
+
+mon_t mon1, mon2, mon3;
+
+void foo( mon_t * mutex a, mon_t * mutex b, mon_t * mutex c ) {}
+
+thread worker_t {};
+
+void main( worker_t * this ) {
+	for( unsigned long i = 0; i < N; i++ ) {
+		foo( &mon1, &mon2, &mon3 );
+	}
+}
+
+int main(int argc, char * argv[] ) {
+	processor p;
+	{
+		worker_t w[7];
+	}
+}
