From 00015285ab17959516f075554e5529e7eeb3bf5b Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 15 Apr 2025 21:25:15 +0300 Subject: [PATCH] Kernel: Add vaddr->paddr getter to VirtualRange --- kernel/include/kernel/Memory/VirtualRange.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/include/kernel/Memory/VirtualRange.h b/kernel/include/kernel/Memory/VirtualRange.h index d4db0476..a824cb89 100644 --- a/kernel/include/kernel/Memory/VirtualRange.h +++ b/kernel/include/kernel/Memory/VirtualRange.h @@ -26,6 +26,16 @@ namespace Kernel size_t size() const { return m_size; } PageTable::flags_t flags() const { return m_flags; } + paddr_t paddr_of(vaddr_t vaddr) const + { + ASSERT(vaddr % PAGE_SIZE == 0); + const size_t index = (vaddr - m_vaddr) / PAGE_SIZE; + ASSERT(index < m_paddrs.size()); + const paddr_t paddr = m_paddrs[index]; + ASSERT(paddr); + return paddr; + } + bool contains(vaddr_t address) const { return vaddr() <= address && address < vaddr() + size(); } BAN::ErrorOr allocate_page_for_demand_paging(vaddr_t address);