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:
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 {