diff options
| author | hachem <im@hachem.wtf> | 2026-09-11 02:38:27 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-11 02:38:27 +0200 |
| commit | c34524767c9eac650f16dbe9059c24af2acd1397 (patch) | |
| tree | e01f2fccd6dedfd1158a0666c12b7c8e9cfc12dd /boot/serial.zig | |
| parent | 8fc9aa8d84486c561776cda8f94e4dfa897a5d4d (diff) | |
feat: pmm + kernel heap
Diffstat (limited to 'boot/serial.zig')
| -rw-r--r-- | boot/serial.zig | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/boot/serial.zig b/boot/serial.zig index 4863864..2e8c8d0 100644 --- a/boot/serial.zig +++ b/boot/serial.zig @@ -48,3 +48,31 @@ fn putc(c: u8) void { pub fn write(s: []const u8) void { for (s) |c| putc(c); } + +// dump a u64 as decimal. handy for "usable: N MiB" type logging. +pub fn writeDec(value: u64) void { + if (value == 0) return putc('0'); + var buf: [20]u8 = undefined; + var i: usize = buf.len; + var v = value; + while (v > 0) { + i -= 1; + buf[i] = '0' + @as(u8, @intCast(v % 10)); + v /= 10; + } + write(buf[i..]); +} + +// dump a u64 as 0x-prefixed 16-digit hex. +pub fn writeHex(value: u64) void { + const digits = "0123456789abcdef"; + var buf: [18]u8 = undefined; + buf[0] = '0'; + buf[1] = 'x'; + var i: usize = 0; + while (i < 16) : (i += 1) { + const shift: u6 = @intCast((15 - i) * 4); + buf[2 + i] = digits[(value >> shift) & 0xF]; + } + write(&buf); +} |
