2022-11-13 14:29:15 +01:00
|
|
|
#pragma once
|
|
|
|
#include <Result.h>
|
|
|
|
#include <Types.h>
|
|
|
|
|
|
|
|
namespace MemoryManager
|
|
|
|
{
|
|
|
|
void init();
|
|
|
|
|
2022-11-16 20:02:04 +01:00
|
|
|
Result<void> protect_kernel_sections();
|
|
|
|
|
2022-11-19 22:27:08 +01:00
|
|
|
Result<u64> alloc_frame();
|
|
|
|
Result<void> free_frame(u64 frame);
|
2022-11-13 14:29:15 +01:00
|
|
|
|
2022-11-19 22:27:08 +01:00
|
|
|
void lock_frame(u64 frame);
|
|
|
|
void lock_frames(u64 frames, u64 count);
|
2022-11-13 16:56:03 +01:00
|
|
|
|
2022-11-16 20:30:34 +01:00
|
|
|
Result<void> remap(u64 address, usize count, int flags);
|
|
|
|
Result<void> remap_unaligned(u64 address, usize count, int flags);
|
2022-11-16 20:02:04 +01:00
|
|
|
|
2022-11-19 18:38:47 +01:00
|
|
|
bool validate_readable_page(u64 address);
|
|
|
|
bool validate_writable_page(u64 address);
|
|
|
|
|
2022-11-19 22:32:48 +01:00
|
|
|
Result<void> map_frames_at(u64 virt, u64 phys, usize count, int flags);
|
2022-11-19 22:28:45 +01:00
|
|
|
|
|
|
|
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);
|
|
|
|
|
2022-11-13 16:56:03 +01:00
|
|
|
u64 free();
|
|
|
|
u64 used();
|
|
|
|
u64 reserved();
|
2022-11-13 14:29:15 +01:00
|
|
|
}
|