lumine
UEFI x86_64 bootloader for linux kernel images
src/main.zig
1046 bytes raw
1const std = @import("std");
2const uefi = std.os.uefi;
3const log = std.log;
4
5const Writer = @import("./uefi/Writer.zig");
6
7pub fn bmain() !void {
8 log.info("hello lumine", .{});
9 while (true)
10 std.atomic.spinLoopHint();
11}
12
13pub fn main() uefi.Status {
14 bmain() catch |err| {
15 log.err("unrecoverable error in bmain: {}", .{err});
16 return .aborted;
17 };
18
19 return .success;
20}
21
22pub fn logFn(
23 comptime level: log.Level,
24 comptime scope: @EnumLiteral(),
25 comptime format: []const u8,
26 args: anytype,
27) void {
28 // stderr should be equivalent to stdout?
29 // but i dont see logs on my hardware if i use stderr
30 var stderr: Writer = .stdout();
31 stderr.interface.print("{t}({}): ", .{ level, scope }) catch return;
32 stderr.interface.print(format ++ "\r\n", args) catch return;
33}
34
35pub fn panicFn(msg: []const u8, _: ?usize) noreturn {
36 logFn(.err, .panic, "{s}", .{msg});
37 @trap();
38}
39
40pub const panic = std.debug.FullPanic(panicFn);
41pub const std_options: std.Options = .{ .logFn = logFn };