#pragma once #include <Result.h> #include <Types.h> namespace MemoryManager { void init(); Result<void> protect_kernel_sections(); Result<u64> alloc_frame(); Result<void> free_frame(u64 frame); void lock_frame(u64 frame); void lock_frames(u64 frames, u64 count); Result<void> remap(u64 address, usize count, int flags); Result<void> remap_unaligned(u64 address, usize count, int flags); bool validate_readable_page(u64 address); bool validate_writable_page(u64 address); Result<void> map_frames_at(u64 virt, u64 phys, usize count, int flags); Result<u64> alloc_at(u64 virt, usize count, int flags); Result<void> unmap_owned(u64 virt, usize count); Result<void> unmap_weak(u64 virt, usize count); u64 free(); u64 used(); u64 reserved(); u64 total(); }