Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ pub fn build(b: *std.Build) anyerror!void {

kernel.setLinkerScript(b.path("src/linker.lds"));

kernel.addCSourceFiles(.{
kernel.root_module.addCSourceFiles(.{
.files = &.{"src/boot.S"},
.flags = &.{ "-x", "assembler-with-cpp" },
});
Expand Down
14 changes: 7 additions & 7 deletions src/kernel.zig
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,22 @@ const uart = @import("uart.zig");

// Here we set up a printf-like writer from the standard library by providing
// a way to output via the UART.
pub fn drainUart(w: *std.io.Writer, data: []const []const u8, splat: usize) !usize {
_ = try uartPutStr(w.buffer);
pub fn drainUart(w: *std.Io.Writer, data: []const []const u8, splat: usize) !usize {
_ = try uartPutStr(w.buffer[0..w.end]);
w.end = 0;
var bytes_written: usize = 0;
for (data[0 .. data.len - 1]) |slice| {
bytes_written += try uartPutStr(slice);
}
if (splat == 0 or data.len < 1) return bytes_written;
const last_data = data[data.len - 1];
for (0..splat) |_| {
bytes_written += try uartPutStr(last_data);
bytes_written += try uartPutStr(data[data.len - 1]);
}
return bytes_written;
}

var uart_writer = std.io.Writer{
.buffer = &[_]u8{} ** 1024,
var uart_writer_buffer: [1024]u8 = undefined;
var uart_writer = std.Io.Writer{
.buffer = &uart_writer_buffer,
.end = 0,
.vtable = &.{ .drain = drainUart },
};
Expand All @@ -33,6 +32,7 @@ fn uartPutStr(str: []const u8) !usize {

pub fn println(comptime fmt: []const u8, args: anytype) void {
uart_writer.print(fmt ++ "\n", args) catch {};
uart_writer.flush() catch {};
}

// This the trap/exception entrypoint, this will be invoked any time
Expand Down