-// Global settings for the test.
-#define DELAY 5
-
-// Settings for the test process.
-//Process 1
-#define INC_PROC_T1 1
-#define DELAY_PROC_T1 INC_PROC_T1*DELAY
-//Process 2
-#define INC_PROC_T2 3
-#define DELAY_PROC_T2 INC_PROC_T2*DELAY
-//Process 3
-#define INC_PROC_T3 5
-#define DELAY_PROC_T3 INC_PROC_T3*DELAY
-//Process 4
-#define INC_PROC_T4 7
-#define DELAY_PROC_T4 INC_PROC_T4*DELAY
-//Process 5
-#define INC_PROC_T5 11
-#define DELAY_PROC_T5 INC_PROC_T5*DELAY
-//Process 6
-#define INC_PROC_T6 13
-#define DELAY_PROC_T6 INC_PROC_T6*DELAY
-//Process 7
-#define INC_PROC_T7 17
-#define DELAY_PROC_T7 INC_PROC_T7*DELAY
-//Process 8
-#define INC_PROC_T8 19
-#define DELAY_PROC_T8 INC_PROC_T8*DELAY
-
-//Global count for each process.
-unsigned int t1_count = 0;
-unsigned int t2_count = 0;
-unsigned int t3_count = 0;
-unsigned int t4_count = 0;
-unsigned int t5_count = 0;
-unsigned int t6_count = 0;
-unsigned int t7_count = 0;
-unsigned int t8_count = 0;
-
-/*
- * These macros generate the code needed to create the test process functions.
- */
-#define PROC_TEST(num) static void proc_test##num(void) \
-{ \
- for (int i = 0; i < INC_PROC_T##num; ++i) \
- { \
- t##num##_count++; \
- kprintf("> Process[%d]: count[%d]\n", num, t##num##_count); \
- timer_delay(DELAY_PROC_T##num); \
- } \
-} \
-
-#define PROC_TEST_STACK(num) static cpu_stack_t proc_test##num##_stack[700 / sizeof(cpu_stack_t)];
-#define PROC_TEST_INIT(num) proc_new(proc_test##num, NULL, sizeof(proc_test##num##_stack), proc_test##num##_stack);
-
-// Define process
-PROC_TEST(1)
-PROC_TEST(2)
-PROC_TEST(3)
-PROC_TEST(4)
-PROC_TEST(5)
-PROC_TEST(6)
-PROC_TEST(7)
-PROC_TEST(8)
+static char name[TASKS][32];
+
+static unsigned int done[TASKS];
+
+static cpu_atomic_t barrier[TASKS];
+static cpu_atomic_t main_barrier;
+
+/* Base time delay for processes using timer_delay() */
+#define DELAY 5