From 278b873e89c1d61c44deae0b4ffca5482124cbf2 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 29 May 2023 21:10:48 +0300 Subject: [PATCH] Kernel: Remove unnecessary usages of PageTableScope This should be used as few times as possible since it calls 'cli' --- kernel/kernel/Memory/FixedWidthAllocator.cpp | 6 ++++-- kernel/kernel/Memory/GeneralAllocator.cpp | 7 ++++--- kernel/kernel/Memory/VirtualRange.cpp | 6 ++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/kernel/kernel/Memory/FixedWidthAllocator.cpp b/kernel/kernel/Memory/FixedWidthAllocator.cpp index d40024be4..17c0cf527 100644 --- a/kernel/kernel/Memory/FixedWidthAllocator.cpp +++ b/kernel/kernel/Memory/FixedWidthAllocator.cpp @@ -1,5 +1,4 @@ #include -#include namespace Kernel { @@ -229,7 +228,8 @@ namespace Kernel if (allocator == nullptr) return BAN::Error::from_errno(ENOMEM); - PageTableScope _(m_page_table); + m_page_table.lock(); + ASSERT(m_page_table.is_page_free(0)); for (node* node = m_used_list; node; node = node->next) @@ -257,6 +257,8 @@ namespace Kernel m_page_table.unmap_page(0); m_page_table.invalidate(0); + m_page_table.unlock(); + return allocator; } diff --git a/kernel/kernel/Memory/GeneralAllocator.cpp b/kernel/kernel/Memory/GeneralAllocator.cpp index e7a0f78bf..e481abdb2 100644 --- a/kernel/kernel/Memory/GeneralAllocator.cpp +++ b/kernel/kernel/Memory/GeneralAllocator.cpp @@ -1,6 +1,4 @@ #include -#include -#include namespace Kernel { @@ -68,7 +66,8 @@ namespace Kernel if (allocator == nullptr) return BAN::Error::from_errno(ENOMEM); - PageTableScope _(m_page_table); + m_page_table.lock(); + ASSERT(m_page_table.is_page_free(0)); for (auto& allocation : m_allocations) @@ -100,6 +99,8 @@ namespace Kernel m_page_table.unmap_page(0); m_page_table.invalidate(0); + m_page_table.unlock(); + return allocator; } diff --git a/kernel/kernel/Memory/VirtualRange.cpp b/kernel/kernel/Memory/VirtualRange.cpp index c6e2790bf..e90d750e3 100644 --- a/kernel/kernel/Memory/VirtualRange.cpp +++ b/kernel/kernel/Memory/VirtualRange.cpp @@ -1,5 +1,4 @@ #include -#include #include namespace Kernel @@ -78,7 +77,8 @@ namespace Kernel { VirtualRange* result = create(page_table, vaddr(), size(), flags()); - PageTableScope _(m_page_table); + m_page_table.lock(); + ASSERT(m_page_table.is_page_free(0)); for (size_t i = 0; i < result->m_physical_pages.size(); i++) { @@ -89,6 +89,8 @@ namespace Kernel m_page_table.unmap_page(0); m_page_table.invalidate(0); + m_page_table.unlock(); + return result; }