sylveos

Toy Operating System
Log | Files | Refs

commit f6c8030703bc450e08c8d1400d8e55163b9b2f8d
parent 8a30a0f082ffa8572bfc8a1e130748b13d021134
Author: Sylvia Ivory <git@sivory.net>
Date:   Thu, 15 Jan 2026 20:02:31 -0800

Ensure GPIO panic is propagated

Diffstat:
Mfake-pi/root.zig | 6++++++
Msrc/test-runner.zig | 20++++++++++++++------
2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/fake-pi/root.zig b/fake-pi/root.zig @@ -91,3 +91,9 @@ export fn nop() void {} export fn delay_cycles(cycles: u32) void { trace("delaying {} cycles\n", .{cycles}); } + +export fn gpio_panic_simple(pin: u8) void { + writer.print("GPIO_PANIC: illegal pin {}\n", .{pin}) catch |e| { + std.log.err("gpio_panic() -> {t}", .{e}); + }; +} diff --git a/src/test-runner.zig b/src/test-runner.zig @@ -15,25 +15,33 @@ export fn output(format: [*:0]const u8, ...) u32 { return 0; } +extern fn gpio_panic_simple(pin: u8) void; + +fn gpio_panic(pin: u8) noreturn { + // only 1 error code + gpio_panic_simple(pin); + std.process.exit(1); +} + export fn gpio_read(pin: u8) bool { - return gpio.read(pin) catch false; + return gpio.read(pin) catch gpio_panic(pin); } export fn gpio_write(pin: u8, state: bool) void { - gpio.write(pin, state) catch {}; + gpio.write(pin, state) catch gpio_panic(pin); } export fn gpio_set_on(pin: u8) void { - gpio.set_on(pin) catch {}; + gpio.set_on(pin) catch gpio_panic(pin); } export fn gpio_set_off(pin: u8) void { - gpio.set_off(pin) catch {}; + gpio.set_off(pin) catch gpio_panic(pin); } export fn gpio_set_input(pin: u8) void { - gpio.set_input(pin) catch {}; + gpio.set_input(pin) catch gpio_panic(pin); } export fn gpio_set_output(pin: u8) void { - gpio.set_output(pin) catch {}; + gpio.set_output(pin) catch gpio_panic(pin); } pub fn kmain() void {