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