Add a way to easily exclude a file from nightly test.
[bertos.git] / bertos / kern / irq.c
index 9b87d69b25420b03798c027adad670524a1ff65f..9a1ff514cef875e2aa426cd31134ffd7274e7df0 100644 (file)
  *
  * \version $Id: proc.h 1646 2008-08-17 13:49:48Z bernie $
  * \author Bernie Innocenti <bernie@codewiz.org>
+ *
+ * Still in development, disable nightly test for now
+ * notest: avr
+ * notest: arm
  */
 #include "irq.h"
 
 #include <cfg/module.h>
 #include <kern/proc_p.h>
+#include <kern/proc.h>
 
 #include <cfg/cfg_kern.h>
 
@@ -52,7 +57,9 @@ static void (*irq_handlers[100])(void);
 /* signal handler */
 void irq_entry(int signum)
 {
+#if CONFIG_KERN_PREEMPT
        Process * const old_process = CurrentProcess;
+#endif
 
        irq_handlers[signum]();
 
@@ -61,18 +68,20 @@ void irq_entry(int signum)
 
        if (old_process != CurrentProcess)
        {
+               IRQ_DISABLE;
+
                TRACEMSG("switching from %p:%s to %p:%s",
                        old_process, old_process ? old_process->monitor.name : "---",
-                       CurrentProcess, CurrentProcess->monitor.name);
+                       CurrentProcess, proc_currentName());
 
                if (old_process)
                        swapcontext(&old_process->context, &CurrentProcess->context);
                else
                        setcontext(&CurrentProcess->context);
 
-               // not reached
+               IRQ_ENABLE;
        }
-       //TRACEMSG("keeping %p:%s", CurrentProcess, CurrentProcess->monitor.name);
+       TRACEMSG("resuming %p:%s", CurrentProcess, CurrentProcess->monitor.name);
 #endif // CONFIG_KERN_PREEMPT
 }
 
@@ -84,6 +93,7 @@ void irq_register(int irq, void (*callback)(void))
 void irq_init(void)
 {
        struct sigaction act;
+
        act.sa_handler = irq_entry;
        sigemptyset(&act.sa_mask);
        //sigaddset(&act.sa_mask, irq);