ajhahn.de
← FlashOS
Zig 27 lines
// host_alloc: shared bump allocator for host tests.
//
// Consolidates the 1 MiB bump allocator used by src/pipe.zig,
// src/file.zig, src/vfs.zig, and src/initramfs.zig host tests.
// Linked as a separate object into each test target to satisfy
// `get_free_page` / `free_page` externs.
//
// State is isolated per test target (Zig creates one test binary
// per `addTest` call).

const PAGE_SIZE: usize = 4096;
var host_page_buf: [1 << 20]u8 align(PAGE_SIZE) = undefined;
var host_page_bump: usize = 0;

export fn get_free_page() u64 {
    if (host_page_bump + PAGE_SIZE > host_page_buf.len) return 0;
    const off = host_page_bump;
    host_page_bump += PAGE_SIZE;
    return @intFromPtr(&host_page_buf[off]);
}

export fn free_page(_: u64) void {}

pub fn reset_phys_mem() void {
    host_page_bump = 0;
}