*
* \brief Signals test.
*
- * \version $Id$
*
* \author Daniele Basile <asterix@develer.com>
*
* These macros generate the code needed to create the test process functions.
*/
#define PROC_TEST_SLAVE(index, signal) \
-static void NORETURN proc_signalTest##index(void) \
+static void proc_signalTest##index(void) \
{ \
- for(;;) \
- { \
- kputs("> Slave [" #index "]: Wait signal [" #signal "]\n"); \
- sig_wait(signal); \
- kputs("> Slave [" #index "]: send signal [" #signal "]\n"); \
- sig_signal(proc_currentUserData(), signal); \
- } \
+ kputs("> Slave [" #index "]: Wait signal [" #signal "]\n"); \
+ sig_wait(signal); \
+ kputs("> Slave [" #index "]: send signal [" #signal "]\n"); \
+ sig_send(proc_currentUserData(), signal); \
}
#define MAIN_CHECK_SIGNAL(index, slave) \
do { \
kprintf("> Main: send signal [%d]\n", test_signal[index]); \
- sig_signal(slave, test_signal[index]); \
+ sig_send(slave, test_signal[index]); \
kprintf("> Main: wait signal [%d]\n", test_signal[index]); \
sig_wait(test_signal[index]); \
count++; \
} while(0) \
-#define PROC_TEST_SLAVE_STACK(index) PROC_DEFINE_STACK(proc_signal_test##index##_stack, KERN_MINSTACKSIZE);
+#if CONFIG_KERN_HEAP
+
+#define PROC_TEST_SLAVE_INIT(index, master_process) proc_new(proc_signalTest##index, master_process, KERN_MINSTACKSIZE * 2, NULL)
+
+#else
+
+#define PROC_TEST_SLAVE_STACK(index) PROC_DEFINE_STACK(proc_signal_test##index##_stack, KERN_MINSTACKSIZE * 2);
#define PROC_TEST_SLAVE_INIT(index, master_process) proc_new(proc_signalTest##index, master_process, sizeof(proc_signal_test##index##_stack), proc_signal_test##index##_stack)
+PROC_TEST_SLAVE_STACK(0)
+PROC_TEST_SLAVE_STACK(1)
+PROC_TEST_SLAVE_STACK(2)
+PROC_TEST_SLAVE_STACK(3)
+PROC_TEST_SLAVE_STACK(4)
+PROC_TEST_SLAVE_STACK(5)
+PROC_TEST_SLAVE_STACK(6)
+PROC_TEST_SLAVE_STACK(7)
+
+#endif
+
// Generate the code for signal test.
PROC_TEST_SLAVE(0, SIG_USER0)
PROC_TEST_SLAVE(1, SIG_USER1)
PROC_TEST_SLAVE(6, SIG_SYSTEM6)
PROC_TEST_SLAVE(7, SIG_SINGLE)
-PROC_TEST_SLAVE_STACK(0)
-PROC_TEST_SLAVE_STACK(1)
-PROC_TEST_SLAVE_STACK(2)
-PROC_TEST_SLAVE_STACK(3)
-PROC_TEST_SLAVE_STACK(4)
-PROC_TEST_SLAVE_STACK(5)
-PROC_TEST_SLAVE_STACK(6)
-PROC_TEST_SLAVE_STACK(7)
-
/**
* Run signal test
*/
{
kdbg_init();
- #if CONFIG_KERN_PREEMPT
- kprintf("Init Interrupt (preempt mode)..");
- irq_init();
- kprintf("Done.\n");
- #endif
-
kprintf("Init Timer..");
timer_init();
kprintf("Done.\n");