Kernel: Add pointer validation API to page table

This commit is contained in:
Bananymous 2023-09-18 21:37:37 +03:00
parent 3a9c6fc51a
commit bc1087f5a7
2 changed files with 10 additions and 1 deletions

View File

@ -110,6 +110,13 @@ namespace Kernel
return *s_current;
}
bool PageTable::is_valid_pointer(uintptr_t pointer)
{
if (!is_canonical(pointer))
return false;
return true;
}
static uint64_t* allocate_zeroed_page_aligned_page()
{
void* page = kmalloc(PAGE_SIZE, PAGE_SIZE, true);

View File

@ -29,13 +29,15 @@ namespace Kernel
static PageTable& kernel();
static PageTable& current();
static bool is_valid_pointer(uintptr_t);
static BAN::ErrorOr<PageTable*> create_userspace();
~PageTable();
void unmap_page(vaddr_t);
void unmap_range(vaddr_t, size_t bytes);
void map_range_at(paddr_t, vaddr_t, size_t, flags_t);
void map_range_at(paddr_t, vaddr_t, size_t bytes, flags_t);
void map_page_at(paddr_t, vaddr_t, flags_t);
paddr_t physical_address_of(vaddr_t) const;