aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2017-05-07 00:09:11 -0400
committerKevin O'Connor <kevin@koconnor.net>2017-05-15 15:00:45 -0400
commit969ee4c8f9a3080bc20b6a78e846bee8c9455dec (patch)
treea73e76d0d9a829be0c315727f44e4ba6d6781c06 /src
parentc35278e217fb45e1001845c33ffd1c947599b40c (diff)
downloadkutter-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>
Diffstat (limited to 'src')
-rw-r--r--src/avr/irq.h3
-rw-r--r--src/command.c2
-rw-r--r--src/generic/armcm_irq.c5
-rw-r--r--src/generic/irq.h1
-rw-r--r--src/sched.c1
-rw-r--r--src/simulator/main.c5
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