aboutsummaryrefslogtreecommitdiff
path: root/scheduler.h
diff options
context:
space:
mode:
authorWojtek Kosior <kwojtus@protonmail.com>2020-01-03 04:53:01 +0100
committerWojtek Kosior <kwojtus@protonmail.com>2020-01-03 04:53:01 +0100
commitffb2c4adfb8e65e355b39abd39d994eebc649c98 (patch)
tree760ef43f89b480ecd0be4bfd9312eb0d8c744d05 /scheduler.h
parent6bf5a3b8c6e8a5d1cb3fb4880a5d9688ab094c62 (diff)
downloadrpi-MMU-example-ffb2c4adfb8e65e355b39abd39d994eebc649c98.tar.gz
rpi-MMU-example-ffb2c4adfb8e65e355b39abd39d994eebc649c98.zip
add (not yet fully working - it can only send through uart now) interrupt-driven uart together with "scheduler"
Diffstat (limited to 'scheduler.h')
-rw-r--r--scheduler.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/scheduler.h b/scheduler.h
new file mode 100644
index 0000000..8c0f569
--- /dev/null
+++ b/scheduler.h
@@ -0,0 +1,32 @@
+#ifndef SCHEDULER_H
+#define SCHEDULER_H
+
+#include <stdint.h>
+
+#include "psr.h"
+
+extern PSR_t PL1_PSR;
+
+void setup_scheduler_structures(void);
+
+// to be called by irq handler when respective uart interrupt happens
+void scheduler_try_output(void);
+
+// to be called by irq handler when respective uart interrupt happens
+void scheduler_try_input(void);
+
+void __attribute__((noreturn))
+schedule_wait_for_output(uint32_t regs[14], char c);
+
+void __attribute__((noreturn))
+schedule_wait_for_input(uint32_t regs[14]);
+
+void __attribute__((noreturn))
+schedule_save_context(uint32_t regs[14]);
+
+void __attribute__((noreturn)) schedule(void);
+
+void __attribute__((noreturn))
+schedule_new(uint32_t pc, uint32_t sp);
+
+#endif