diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-05-07 00:09:11 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-05-15 15:00:45 -0400 |
commit | 969ee4c8f9a3080bc20b6a78e846bee8c9455dec (patch) | |
tree | a73e76d0d9a829be0c315727f44e4ba6d6781c06 | |
parent | c35278e217fb45e1001845c33ffd1c947599b40c (diff) | |
download | kutter-969ee4c8f9a3080bc20b6a78e846bee8c9455dec.tar.gz kutter-969ee4c8f9a3080bc20b6a78e846bee8c9455dec.tar.xz kutter-969ee4c8f9a3080bc20b6a78e846bee8c9455dec.zip |
irq: Add an irq_poll() stub for board code
Allow the board specific code to run checks prior to running each
task.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r-- | src/avr/irq.h | 3 | ||||
-rw-r--r-- | src/command.c | 2 | ||||
-rw-r--r-- | src/generic/armcm_irq.c | 5 | ||||
-rw-r--r-- | src/generic/irq.h | 1 | ||||
-rw-r--r-- | src/sched.c | 1 | ||||
-rw-r--r-- | src/simulator/main.c | 5 |
6 files changed, 17 insertions, 0 deletions
diff --git a/src/avr/irq.h b/src/avr/irq.h index f586273a..33172c0f 100644 --- a/src/avr/irq.h +++ b/src/avr/irq.h @@ -28,4 +28,7 @@ static inline void irq_restore(irqstatus_t flag) { SREG = flag; } +static inline void irq_poll(void) { +} + #endif // irq.h diff --git a/src/command.c b/src/command.c index 915bbd42..44de070d 100644 --- a/src/command.c +++ b/src/command.c @@ -7,6 +7,7 @@ #include <stdarg.h> // va_start #include <string.h> // memcpy #include "board/io.h" // readb +#include "board/irq.h" // irq_poll #include "board/misc.h" // crc16_ccitt #include "board/pgm.h" // READP #include "command.h" // output_P @@ -306,6 +307,7 @@ command_task(void) p = parsef(p, msgend, cp, args); if (!p) break; + irq_poll(); void (*func)(uint32_t*) = READP(cp->func); func(args); } diff --git a/src/generic/armcm_irq.c b/src/generic/armcm_irq.c index 64acdd89..9c01ab0d 100644 --- a/src/generic/armcm_irq.c +++ b/src/generic/armcm_irq.c @@ -34,6 +34,11 @@ irq_restore(irqstatus_t flag) asm volatile("msr primask, %0" :: "r" (flag) : "memory"); } +void +irq_poll(void) +{ +} + // Clear the active irq if a shutdown happened in an irq handler static void clear_active_irq(void) diff --git a/src/generic/irq.h b/src/generic/irq.h index 0a56c657..1e39d4e6 100644 --- a/src/generic/irq.h +++ b/src/generic/irq.h @@ -9,5 +9,6 @@ void irq_disable(void); void irq_enable(void); irqstatus_t irq_save(void); void irq_restore(irqstatus_t flag); +void irq_poll(void); #endif // irq.h diff --git a/src/sched.c b/src/sched.c index 8617108a..ed23df26 100644 --- a/src/sched.c +++ b/src/sched.c @@ -268,6 +268,7 @@ run_task(void) { struct callback_handler *p; foreachdecl(p, taskfuncs) { + irq_poll(); void (*func)(void) = READP(p->func); func(); } diff --git a/src/simulator/main.c b/src/simulator/main.c index 42fb7a25..72d0abaf 100644 --- a/src/simulator/main.c +++ b/src/simulator/main.c @@ -47,6 +47,11 @@ irq_restore(irqstatus_t flag) Interrupt_off = flag; } +void +irq_poll(void) +{ +} + /**************************************************************** * Timers |