Kernel: PageTable now supports reserved pages

You can now map pages as reserved, so that they will not be given
from get_free_page() or get_free_contiguous_pages().
This commit is contained in:
Bananymous
2023-08-01 16:32:51 +03:00
parent dddfa308d7
commit 64ad752e73
2 changed files with 25 additions and 12 deletions

View File

@@ -10,13 +10,16 @@ namespace Kernel
class PageTable
{
public:
using flags_t = uint8_t;
using flags_t = uint16_t;
enum Flags : flags_t
{
Present = 1,
ReadWrite = 2,
UserSupervisor = 4,
Execute = 8,
Reserved = 256,
Used = Present | Reserved,
};
public:
@@ -40,8 +43,8 @@ namespace Kernel
bool is_page_free(vaddr_t) const;
bool is_range_free(vaddr_t, size_t bytes) const;
vaddr_t get_free_page(vaddr_t first_address = PAGE_SIZE) const;
vaddr_t get_free_contiguous_pages(size_t page_count, vaddr_t first_address = PAGE_SIZE) const;
vaddr_t get_free_page(vaddr_t first_address = PAGE_SIZE);
vaddr_t get_free_contiguous_pages(size_t page_count, vaddr_t first_address = PAGE_SIZE);
void load();