Merge branch "preempt" in "trunk".
[bertos.git] / bertos / kern / sem_test.c
index 354277fcbd0f4e9c0a6cbc41d17f3e21fff8a555..555f755d1562076e5dd857e304c403874f010bba 100644 (file)
  * \brief Semaphore test.
  *
  * \version $Id$
- * 
+ *
  * \author Daniele Basile <asterix@develer.com>
- * \author Stefano Fedrigo <aleph@develer.com> 
- * 
+ * \author Stefano Fedrigo <aleph@develer.com>
+ *
+ * $test$: cp bertos/cfg/cfg_proc.h $cfgdir/
+ * $test$: echo  "#undef CONFIG_KERN" >> $cfgdir/cfg_proc.h
+ * $test$: echo "#define CONFIG_KERN 1" >> $cfgdir/cfg_proc.h
+ * $test$: cp bertos/cfg/cfg_sem.h $cfgdir/
+ * $test$: echo  "#undef CONFIG_KERN_SEMAPHORES" >> $cfgdir/cfg_sem.h
+ * $test$: echo "#define CONFIG_KERN_SEMAPHORES 1" >> $cfgdir/cfg_sem.h
  */
 
 #include <cfg/debug.h>
@@ -50,7 +56,7 @@
 // Global settings for the test.
 #define MAX_GLOBAL_COUNT             1024
 #define TEST_TIME_OUT_MS             6000
-#define DELAY                          5
+#define DELAY                           5
 
 // Settings for the test process.
 //Process 1
@@ -83,8 +89,8 @@ unsigned int global_count = 0;
 
 /*
  * These macros generate the code needed to create the test process functions.
- */ 
-#define PROC_TEST(num) static void proc_test##num(void) \
+ */
+#define PROC_TEST(num) static void proc_semTest##num(void) \
 { \
        unsigned int local_count = 0; \
        \
@@ -103,8 +109,8 @@ unsigned int global_count = 0;
        } \
 } \
 
-#define PROC_TEST_STACK(num)  static cpu_stack_t proc_test##num##_stack[CONFIG_KERN_MINSTACKSIZE / 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 PROC_TEST_STACK(num)  PROC_DEFINE_STACK(proc_sem_test##num##_stack, KERN_MINSTACKSIZE * 2)
+#define PROC_TEST_INIT(num)   proc_new(proc_semTest##num, NULL, sizeof(proc_sem_test##num##_stack), proc_sem_test##num##_stack);
 
 // Define process
 PROC_TEST(1)
@@ -134,7 +140,7 @@ int sem_testRun(void)
        ticks_t start_time = timer_clock();
 
        kprintf("Run semaphore test..\n");
-       
+
        //Init the process tests
        PROC_TEST_INIT(1)
        PROC_TEST_INIT(2)
@@ -145,16 +151,16 @@ int sem_testRun(void)
        PROC_TEST_INIT(7)
        PROC_TEST_INIT(8)
        kputs("> Main: Processes created\n");
-       
+
        /*
-        * Wait until all process finishing, if some going wrong we return 
-        * error after time_out_ms ms.
-        */ 
+        * Wait until all processes exit, if something goes wrong we return an
+        * error after timeout_ms.
+        */
        while((timer_clock() - start_time) < ms_to_ticks(TEST_TIME_OUT_MS))
        {
                if (sem_attempt(&sem))
                {
-                       kputs("> Main: Check if test is finish..\n");
+                       kputs("> Main: Check if test has finished..\n");
                        if(global_count == MAX_GLOBAL_COUNT)
                        {
                                kputs("> Main: Test Finished..Ok!\n");
@@ -165,7 +171,7 @@ int sem_testRun(void)
                }
                proc_yield();
        }
-       
+
        kputs("Semaphore Test fail..\n");
        return -1;
 }
@@ -177,21 +183,15 @@ int sem_testSetup(void)
        kprintf("Init Semaphore..");
        sem_init(&sem);
        kprintf("Done.\n");
-       
-       #if CONFIG_KERN_PREEMPT
-               kprintf("Init Interrupt (preempt mode)..");
-               irq_init();
-               kprintf("Done.\n");
-       #endif
 
        kprintf("Init Timer..");
        timer_init();
        kprintf("Done.\n");
-       
+
        kprintf("Init Process..");
        proc_init();
        kprintf("Done.\n");
-       
+
        return 0;
 }
 
@@ -201,4 +201,4 @@ int sem_testTearDown(void)
        return 0;
 }
 
-TEST_MAIN(sem);
\ No newline at end of file
+TEST_MAIN(sem);