Kernel: Add some bareboness functionality to map virtual addresses

This commit is contained in:
Bananymous
2023-04-19 23:51:36 +03:00
parent 0030f035be
commit ea0c9b639f
4 changed files with 65 additions and 57 deletions

View File

@@ -158,26 +158,21 @@ namespace Kernel::Memory
dprintln("Total RAM {}.{} MB", total / (1 << 20), total % (1 << 20) * 1000 / (1 << 20));
}
paddr_t Heap::take_mapped_page(uint8_t flags)
paddr_t Heap::take_free_page()
{
for (auto& range : m_physical_ranges)
{
if (paddr_t page = range.reserve_page(); page != PhysicalRange::invalid)
{
MMU::get().map_page(page, flags);
return page;
}
}
ASSERT_NOT_REACHED();
}
void Heap::return_mapped_page(paddr_t addr)
void Heap::release_page(paddr_t addr)
{
for (auto& range : m_physical_ranges)
{
if (range.contains(addr))
{
MMU::get().unmap_page(addr);
range.release_page(addr);
return;
}
}