aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interrupts.zig4
-rw-r--r--src/process.zig4
2 files changed, 6 insertions, 2 deletions
diff --git a/src/interrupts.zig b/src/interrupts.zig
index 2a6bf34..4d12f99 100644
--- a/src/interrupts.zig
+++ b/src/interrupts.zig
@@ -266,12 +266,12 @@ export fn supervisorTrapVector() align(4) callconv(.Naked) noreturn {
);
}
-fn schedule() noreturn {
+fn schedule() !noreturn {
if (process.next()) |next| {
process.switchTo(next);
}
- while (true) asm volatile ("wfi");
+ return process.Error.EmptySchedule;
}
pub fn init() void {
diff --git a/src/process.zig b/src/process.zig
index a6217c6..045d667 100644
--- a/src/process.zig
+++ b/src/process.zig
@@ -13,6 +13,10 @@ const num_stack_pages = 2;
var next_pid: u16 = 1;
var list = std.mem.zeroInit(std.DoublyLinkedList(Info), .{});
+pub const Error = error{
+ EmptySchedule,
+};
+
pub const State = enum(u8) {
waiting,
active,