+#if CONFIG_KERN_SIGNALS & CONFIG_KERN_PRI
+ // test process priority
+ // main process must have the higher priority to check signals received
+ proc_setPri(proc_current(), 10);
+
+ struct Process *curr = proc_current();
+ // the order in which the processes are created is important!
+ PROC_PRI_TEST_INIT(0, curr);
+ PROC_PRI_TEST_INIT(1, curr);
+ PROC_PRI_TEST_INIT(2, curr);
+
+ // signals must be: USER2, 1, 0 in order
+ sigmask_t signals = sig_wait(SIG_USER0 | SIG_USER1 | SIG_USER2);
+ if (!(signals & SIG_USER2))
+ goto priority_fail;
+
+ signals = sig_wait(SIG_USER0 | SIG_USER1 | SIG_USER2);
+ if (!(signals & SIG_USER1))
+ goto priority_fail;
+
+ signals = sig_wait(SIG_USER0 | SIG_USER1 | SIG_USER2);
+ if (!(signals & SIG_USER0))
+ goto priority_fail;
+
+ // All processes must have quit by now, but just in case...
+ signals = sig_waitTimeout(SIG_USER0 | SIG_USER1 | SIG_USER2, 200);
+ if (signals & (SIG_USER0 | SIG_USER1 | SIG_USER2))
+ goto priority_fail;
+
+ if (signals & SIG_TIMEOUT)
+ {
+ kputs("Priority test successfull.\n");
+ }
+
+ return ret_value;
+
+priority_fail:
+ kputs("Priority test failed.\n");