λ

lumine

UEFI x86_64 bootloader for linux kernel images

settings

src/main.zig

1046 bytes raw

const std = @import("std");
const uefi = std.os.uefi;
const log = std.log;

const Writer = @import("./uefi/Writer.zig");

pub fn bmain() !void {
    log.info("hello lumine", .{});
    while (true)
        std.atomic.spinLoopHint();
}

pub fn main() uefi.Status {
    bmain() catch |err| {
        log.err("unrecoverable error in bmain: {}", .{err});
        return .aborted;
    };

    return .success;
}

pub fn logFn(
    comptime level: log.Level,
    comptime scope: @EnumLiteral(),
    comptime format: []const u8,
    args: anytype,
) void {
    // stderr should be equivalent to stdout?
    // but i dont see logs on my hardware if i use stderr
    var stderr: Writer = .stdout();
    stderr.interface.print("{t}({}): ", .{ level, scope }) catch return;
    stderr.interface.print(format ++ "\r\n", args) catch return;
}

pub fn panicFn(msg: []const u8, _: ?usize) noreturn {
    logFn(.err, .panic, "{s}", .{msg});
    @trap();
}

pub const panic = std.debug.FullPanic(panicFn);
pub const std_options: std.Options = .{ .logFn = logFn };