Index: longrun_tests/Makefile.am
===================================================================
--- longrun_tests/Makefile.am	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ longrun_tests/Makefile.am	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -18,4 +18,6 @@
 ACLOCAL_AMFLAGS  = -I automake
 
+include $(top_srcdir)/src/cfa.make
+
 repeats=10
 max_time=600
@@ -24,56 +26,62 @@
 type=LONG
 
-REPEAT = ${abs_top_srcdir}/tools/repeat
-WATCHDOG = ${abs_top_srcdir}/tools/watchdog
+REPEAT = $(abs_top_builddir)/tools/repeat
+WATCHDOG = $(abs_top_builddir)/tools/watchdog
 TIME = /usr/bin/time -f "%E"
 
-# $(shell ./update-type $(type))
-# ./update-type $(type)
+UPDATED_TYPE = $(shell $(srcdir)/update-type $(type))
 
-UPDATED_TYPE = $(shell ./update-type $(type))
-
-BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ -O2 -DPREEMPTION_RATE=${preempt} -I../tests -I. -DTEST_$(shell cat .type | tr a-z A-Z)
-CFLAGS = ${BUILD_FLAGS}
-CC = @CFACC@
+BUILD_FLAGS =
+AM_CFAFLAGS = \
+	-g \
+	-Wall \
+	-Wno-unused-function \
+	-quiet \
+	-O2 \
+	-DPREEMPTION_RATE=$(preempt) \
+	-I$(abs_top_srcdir)/tests \
+	-I$(srcdir) \
+	-DTEST_$(shell cat .type | tr a-z A-Z) \
+	-in-tree
 
 TESTS = block coroutine create disjoint enter enter3 processor stack wait yield
 
-# .INTERMEDIATE: ${TESTS}
+# .INTERMEDIATE: $(TESTS)
 
-all-local: ${TESTS:=.run}
+all-local: $(TESTS:=.run)
 
-runall : ${TESTS:=.run}
+runall : $(TESTS:=.run)
 	@ echo "All programs terminated normally"
 
-watchall : ${TESTS:=.watch}
+watchall : $(TESTS:=.watch)
 	@ echo "All programs terminated normally"
 
-compileall : ${TESTS}
+compileall : $(TESTS)
 	@ echo "Compiled"
 
 clean-local:
-	rm -f ${TESTS} core* out.log .type
+	rm -f $(TESTS) core* out.log .type
 
-% : %.c ${CC} ${UPDATED_TYPE}
-	${AM_V_GEN}${CC} ${CFLAGS} ${<} $(debug) -o ${@}
+% : %.cfa $(CFACC) $(UPDATED_TYPE)
+	$(AM_V_CFA)$(CFACOMPILE) $(<) $(debug) -o $(@)
 
-%.run : % ${REPEAT}
-	@ time ${REPEAT} -r out.log -i -s $(repeats) timeout ${max_time} ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
+%.run : % $(REPEAT)
+	@ time $(REPEAT) -r out.log -i -s $(repeats) timeout $(max_time) ./$(<)
+	@ rm $(<)
+	@ echo -e "$(<): SUCCESS\n"
 
-%.watch : % ${WATCHDOG}
-	@ time ${WATCHDOG} ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
+%.watch : % $(WATCHDOG)
+	@ time $(WATCHDOG} ./$(<)
+	@ rm $(<)
+	@ echo -e "$(<): SUCCESS\n"
 
-%.time : % ${REPEAT}
-	@ ${REPEAT} -i -s -- $(repeats) $(TIME) -a -o times.log ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
+%.time : % $(REPEAT)
+	@ $(REPEAT) -i -s -- $(repeats) $(TIME) -a -o times.log ./$(<)
+	@ rm $(<)
+	@ echo -e "$(<): SUCCESS\n"
 
-${REPEAT}: ${abs_top_srcdir}/tools/Makefile
-	@+make -C ${abs_top_srcdir}/tools/
+$(REPEAT): $(abs_top_builddir)/tools/Makefile
+	@+make -C $(abs_top_builddir)/tools/
 
-${WATCHDOG}: ${abs_top_srcdir}/tools/Makefile
-	@+make -C ${abs_top_srcdir}/tools/
+$(WATCHDOG): $(abs_top_builddir)/tools/Makefile
+	@+make -C $(abs_top_builddir)/tools/
Index: longrun_tests/Makefile.in
===================================================================
--- longrun_tests/Makefile.in	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ longrun_tests/Makefile.in	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -331,5 +331,5 @@
 	$(TEST_LOG_FLAGS)
 am__DIST_COMMON = $(srcdir)/Makefile.in \
-	$(top_srcdir)/automake/test-driver
+	$(top_srcdir)/automake/test-driver $(top_srcdir)/src/cfa.make
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -342,5 +342,5 @@
 AWK = @AWK@
 BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
-CC = @CFACC@
+CC = @CC@
 CCAS = @CCAS@
 CCASDEPMODE = @CCASDEPMODE@
@@ -356,5 +356,5 @@
 CFA_NAME = @CFA_NAME@
 CFA_PREFIX = @CFA_PREFIX@
-CFLAGS = ${BUILD_FLAGS}
+CFLAGS = @CFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
@@ -479,4 +479,28 @@
 AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
 ACLOCAL_AMFLAGS = -I automake
+CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCFACOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CFACC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+
+AM_V_CFA = $(am__v_CFA_@AM_V@)
+am__v_CFA_ = $(am__v_CFA_@AM_DEFAULT_V@)
+am__v_CFA_0 = @echo "  CFA     " $@;
+am__v_CFA_1 = 
+AM_V_JAVAC = $(am__v_JAVAC_@AM_V@)
+am__v_JAVAC_ = $(am__v_JAVAC_@AM_DEFAULT_V@)
+am__v_JAVAC_0 = @echo "  JAVAC   " $@;
+am__v_JAVAC_1 = 
+AM_V_GOC = $(am__v_GOC_@AM_V@)
+am__v_GOC_ = $(am__v_GOC_@AM_DEFAULT_V@)
+am__v_GOC_0 = @echo "  GOC     " $@;
+am__v_GOC_1 = 
+UPPCC = u++
+UPPCOMPILE = $(UPPCC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_UPPFLAGS) $(UPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_UPP = $(am__v_UPP_@AM_V@)
+am__v_UPP_ = $(am__v_UPP_@AM_DEFAULT_V@)
+am__v_UPP_0 = @echo "  UPP     " $@;
+am__v_UPP_1 = 
 repeats = 10
 max_time = 600
@@ -484,18 +508,27 @@
 debug = -debug
 type = LONG
-REPEAT = ${abs_top_srcdir}/tools/repeat
-WATCHDOG = ${abs_top_srcdir}/tools/watchdog
+REPEAT = $(abs_top_builddir)/tools/repeat
+WATCHDOG = $(abs_top_builddir)/tools/watchdog
 TIME = /usr/bin/time -f "%E"
-
-# $(shell ./update-type $(type))
-# ./update-type $(type)
-UPDATED_TYPE = $(shell ./update-type $(type))
-BUILD_FLAGS = -g -Wall -Wno-unused-function -quiet @CFA_FLAGS@ -O2 -DPREEMPTION_RATE=${preempt} -I../tests -I. -DTEST_$(shell cat .type | tr a-z A-Z)
+UPDATED_TYPE = $(shell $(srcdir)/update-type $(type))
+BUILD_FLAGS = 
+AM_CFAFLAGS = \
+	-g \
+	-Wall \
+	-Wno-unused-function \
+	-quiet \
+	-O2 \
+	-DPREEMPTION_RATE=$(preempt) \
+	-I$(abs_top_srcdir)/tests \
+	-I$(srcdir) \
+	-DTEST_$(shell cat .type | tr a-z A-Z) \
+	-in-tree
+
 TESTS = block coroutine create disjoint enter enter3 processor stack wait yield
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .log .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+.SUFFIXES: .cfa .lo .log .o .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/src/cfa.make $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -517,4 +550,5 @@
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
+$(top_srcdir)/src/cfa.make $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -917,43 +951,53 @@
 
 
-# .INTERMEDIATE: ${TESTS}
-
-all-local: ${TESTS:=.run}
-
-runall : ${TESTS:=.run}
+.cfa.o:
+	$(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+	$(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Po
+
+.cfa.lo:
+	$(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+	$(LTCFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+	$(am__mv) $$depbase.Tpo $$depbase.Plo
+
+# .INTERMEDIATE: $(TESTS)
+
+all-local: $(TESTS:=.run)
+
+runall : $(TESTS:=.run)
 	@ echo "All programs terminated normally"
 
-watchall : ${TESTS:=.watch}
+watchall : $(TESTS:=.watch)
 	@ echo "All programs terminated normally"
 
-compileall : ${TESTS}
+compileall : $(TESTS)
 	@ echo "Compiled"
 
 clean-local:
-	rm -f ${TESTS} core* out.log .type
-
-% : %.c ${CC} ${UPDATED_TYPE}
-	${AM_V_GEN}${CC} ${CFLAGS} ${<} $(debug) -o ${@}
-
-%.run : % ${REPEAT}
-	@ time ${REPEAT} -r out.log -i -s $(repeats) timeout ${max_time} ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-%.watch : % ${WATCHDOG}
-	@ time ${WATCHDOG} ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-%.time : % ${REPEAT}
-	@ ${REPEAT} -i -s -- $(repeats) $(TIME) -a -o times.log ./${<}
-	@ rm ${<}
-	@ echo -e "${<}: SUCCESS\n"
-
-${REPEAT}: ${abs_top_srcdir}/tools/Makefile
-	@+make -C ${abs_top_srcdir}/tools/
-
-${WATCHDOG}: ${abs_top_srcdir}/tools/Makefile
-	@+make -C ${abs_top_srcdir}/tools/
+	rm -f $(TESTS) core* out.log .type
+
+% : %.cfa $(CFACC) $(UPDATED_TYPE)
+	$(AM_V_CFA)$(CFACOMPILE) $(<) $(debug) -o $(@)
+
+%.run : % $(REPEAT)
+	@ time $(REPEAT) -r out.log -i -s $(repeats) timeout $(max_time) ./$(<)
+	@ rm $(<)
+	@ echo -e "$(<): SUCCESS\n"
+
+%.watch : % $(WATCHDOG)
+	@ time $(WATCHDOG} ./$(<)
+	@ rm $(<)
+	@ echo -e "$(<): SUCCESS\n"
+
+%.time : % $(REPEAT)
+	@ $(REPEAT) -i -s -- $(repeats) $(TIME) -a -o times.log ./$(<)
+	@ rm $(<)
+	@ echo -e "$(<): SUCCESS\n"
+
+$(REPEAT): $(abs_top_builddir)/tools/Makefile
+	@+make -C $(abs_top_builddir)/tools/
+
+$(WATCHDOG): $(abs_top_builddir)/tools/Makefile
+	@+make -C $(abs_top_builddir)/tools/
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
Index: longrun_tests/block.c
===================================================================
--- longrun_tests/block.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/block.c
Index: longrun_tests/block.cfa
===================================================================
--- longrun_tests/block.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/block.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,1 @@
+../tests/concurrent/signal/block.cfa
Index: longrun_tests/coroutine.c
===================================================================
--- longrun_tests/coroutine.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/coroutineYield.c
Index: longrun_tests/coroutine.cfa
===================================================================
--- longrun_tests/coroutine.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/coroutine.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,1 @@
+../tests/concurrent/coroutineYield.cfa
Index: longrun_tests/create.c
===================================================================
--- longrun_tests/create.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-static const unsigned long N = 60_000ul;
-
-thread worker_t {};
-
-void main(worker_t & this) {}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	for(int i = 0; TEST(i < N); i++) {
-		worker_t w[7];
-		KICK_WATCHDOG;
-	}
-}
Index: longrun_tests/create.cfa
===================================================================
--- longrun_tests/create.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/create.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,27 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+static const unsigned long N = 60_000ul;
+
+thread worker_t {};
+
+void main(worker_t & this) {}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	for(int i = 0; TEST(i < N); i++) {
+		worker_t w[7];
+		KICK_WATCHDOG;
+	}
+}
Index: longrun_tests/disjoint.c
===================================================================
--- longrun_tests/disjoint.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/disjoint.c
Index: longrun_tests/disjoint.cfa
===================================================================
--- longrun_tests/disjoint.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/disjoint.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,1 @@
+../tests/concurrent/signal/disjoint.cfa
Index: longrun_tests/enter.c
===================================================================
--- longrun_tests/enter.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#define __kick_rate 75000ul
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-static const unsigned long N  = 2_100_000ul;
-
-monitor mon_t {};
-void foo( mon_t & mutex this ) {
-	KICK_WATCHDOG;
-}
-
-mon_t mon;
-thread worker_t {};
-void main( worker_t & this ) {
-	for( unsigned long i = 0; TEST(i < N); i++ ) {
-		foo( mon );
-	}
-}
-
-int main(int argc, char * argv[] ) {
-	processor p;
-	{
-		worker_t w[7];
-	}
-}
Index: longrun_tests/enter.cfa
===================================================================
--- longrun_tests/enter.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/enter.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,37 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 75000ul
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+static const unsigned long N  = 2_100_000ul;
+
+monitor mon_t {};
+void foo( mon_t & mutex this ) {
+	KICK_WATCHDOG;
+}
+
+mon_t mon;
+thread worker_t {};
+void main( worker_t & this ) {
+	for( unsigned long i = 0; TEST(i < N); i++ ) {
+		foo( mon );
+	}
+}
+
+int main(int argc, char * argv[] ) {
+	processor p;
+	{
+		worker_t w[7];
+	}
+}
Index: longrun_tests/enter3.c
===================================================================
--- longrun_tests/enter3.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,45 +1,0 @@
-#include <kernel.hfa>
-#include <monitor.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#define __kick_rate 75000ul
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-static const unsigned long N  = 500_000ul;
-
-monitor mon_t {};
-
-mon_t mon1, mon2, mon3;
-
-void foo( mon_t & mutex a, mon_t & mutex b, mon_t & mutex c ) {
-	KICK_WATCHDOG;
-}
-
-thread worker_t {};
-
-void main( worker_t & this ) {
-	for( unsigned long i = 0; TEST(i < N); i++ ) {
-		foo( mon1, mon2, mon3 );
-	}
-}
-
-extern "C" {
-static worker_t * workers;
-}
-
-int main(int argc, char * argv[] ) {
-	processor p;
-	{
-		worker_t w[7];
-		workers = w;
-	}
-}
Index: longrun_tests/enter3.cfa
===================================================================
--- longrun_tests/enter3.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/enter3.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,45 @@
+#include <kernel.hfa>
+#include <monitor.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 75000ul
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+static const unsigned long N  = 500_000ul;
+
+monitor mon_t {};
+
+mon_t mon1, mon2, mon3;
+
+void foo( mon_t & mutex a, mon_t & mutex b, mon_t & mutex c ) {
+	KICK_WATCHDOG;
+}
+
+thread worker_t {};
+
+void main( worker_t & this ) {
+	for( unsigned long i = 0; TEST(i < N); i++ ) {
+		foo( mon1, mon2, mon3 );
+	}
+}
+
+extern "C" {
+static worker_t * workers;
+}
+
+int main(int argc, char * argv[] ) {
+	processor p;
+	{
+		worker_t w[7];
+		workers = w;
+	}
+}
Index: longrun_tests/preempt.c
===================================================================
--- longrun_tests/preempt.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/preempt.c
Index: longrun_tests/preempt.cfa
===================================================================
--- longrun_tests/preempt.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/preempt.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,1 @@
+../tests/concurrent/preempt.cfa
Index: longrun_tests/processor.c
===================================================================
--- longrun_tests/processor.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,33 +1,0 @@
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#include <unistd.h>
-
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-static const unsigned long N = 50_000ul;
-
-int main(int argc, char* argv[]) {
-	processor * p[15];
-	for ( int pi = 0; pi < 15; pi++ ) {
-		p[pi] = new();
-	}
-	for ( int i = 0; TEST(i < N); i++) {
-		int pi = i % 15;
-		delete( p[pi] );
-		p[pi] = new();
-		KICK_WATCHDOG;
-	}
-	for ( int pi = 0; pi < 15; pi++ ) {
-		delete( p[pi] );
-	}
-}
Index: longrun_tests/processor.cfa
===================================================================
--- longrun_tests/processor.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/processor.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,33 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#include <unistd.h>
+
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+static const unsigned long N = 50_000ul;
+
+int main(int argc, char* argv[]) {
+	processor * p[15];
+	for ( int pi = 0; pi < 15; pi++ ) {
+		p[pi] = new();
+	}
+	for ( int i = 0; TEST(i < N); i++) {
+		int pi = i % 15;
+		delete( p[pi] );
+		p[pi] = new();
+		KICK_WATCHDOG;
+	}
+	for ( int pi = 0; pi < 15; pi++ ) {
+		delete( p[pi] );
+	}
+}
Index: longrun_tests/stack.c
===================================================================
--- longrun_tests/stack.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,46 +1,0 @@
-#include <kernel.hfa>
-#include <math.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#define __kick_rate 5000000ul
-#include "long_tests.h"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-thread worker_t {};
-
-void main(worker_t & this) {
-	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();
-		}
-	}
-}
-
-extern "C" {
-static worker_t * workers;
-}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	{
-		worker_t w[7];
-		workers = w;
-	}
-}
Index: longrun_tests/stack.cfa
===================================================================
--- longrun_tests/stack.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/stack.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,46 @@
+#include <kernel.hfa>
+#include <math.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 5000000ul
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+thread worker_t {};
+
+void main(worker_t & this) {
+	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();
+		}
+	}
+}
+
+extern "C" {
+static worker_t * workers;
+}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	{
+		worker_t w[7];
+		workers = w;
+	}
+}
Index: longrun_tests/wait.c
===================================================================
--- longrun_tests/wait.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,1 +1,0 @@
-../concurrent/signal/wait.c
Index: longrun_tests/wait.cfa
===================================================================
--- longrun_tests/wait.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/wait.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,1 @@
+../tests/concurrent/signal/wait.cfa
Index: longrun_tests/yield.c
===================================================================
--- longrun_tests/yield.c	(revision 1241851f3a8c54d3b626b2a944c532bec4e7564b)
+++ 	(revision )
@@ -1,41 +1,0 @@
-#include <kernel.hfa>
-#include <thread.hfa>
-#include <time.hfa>
-
-#define __kick_rate 550000ul
-#include "long_tests.hfa"
-
-#ifndef PREEMPTION_RATE
-#error PREEMPTION_RATE not defined in makefile
-#endif
-
-Duration default_preemption() {
-	return PREEMPTION_RATE;
-}
-
-#ifdef TEST_LONG
-static const unsigned long N = 9_750_000ul;
-#else
-static const unsigned long N = 325_000ul;
-#endif
-
-thread worker_t {};
-
-void main(worker_t & this) {
-	for(int i = 0; TEST(i < N); i++) {
-		yield();
-		KICK_WATCHDOG;
-	}
-}
-
-extern "C" {
-static worker_t * workers;
-}
-
-int main(int argc, char* argv[]) {
-	processor p;
-	{
-		worker_t w[7];
-		workers = w;
-	}
-}
Index: longrun_tests/yield.cfa
===================================================================
--- longrun_tests/yield.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
+++ longrun_tests/yield.cfa	(revision ea6226569c27a942134dad8c4fb127053ee0c553)
@@ -0,0 +1,41 @@
+#include <kernel.hfa>
+#include <thread.hfa>
+#include <time.hfa>
+
+#define __kick_rate 550000ul
+#include "long_tests.hfa"
+
+#ifndef PREEMPTION_RATE
+#error PREEMPTION_RATE not defined in makefile
+#endif
+
+Duration default_preemption() {
+	return PREEMPTION_RATE;
+}
+
+#ifdef TEST_LONG
+static const unsigned long N = 9_750_000ul;
+#else
+static const unsigned long N = 325_000ul;
+#endif
+
+thread worker_t {};
+
+void main(worker_t & this) {
+	for(int i = 0; TEST(i < N); i++) {
+		yield();
+		KICK_WATCHDOG;
+	}
+}
+
+extern "C" {
+static worker_t * workers;
+}
+
+int main(int argc, char* argv[]) {
+	processor p;
+	{
+		worker_t w[7];
+		workers = w;
+	}
+}
