From e6f73d69a2daf582c75df81229769db7477bd7fd Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Wed, 26 May 2021 02:47:47 -0700 Subject: [PATCH] Kernel: Switch Region to IntrusiveList from InlineLinkedList --- Kernel/VM/MemoryManager.cpp | 8 ++++---- Kernel/VM/MemoryManager.h | 4 ++-- Kernel/VM/Region.h | 13 ++++++------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Kernel/VM/MemoryManager.cpp b/Kernel/VM/MemoryManager.cpp index d278cc8159..0009cceac2 100644 --- a/Kernel/VM/MemoryManager.cpp +++ b/Kernel/VM/MemoryManager.cpp @@ -855,18 +855,18 @@ void MemoryManager::register_region(Region& region) { ScopedSpinLock lock(s_mm_lock); if (region.is_kernel()) - m_kernel_regions.append(®ion); + m_kernel_regions.append(region); else - m_user_regions.append(®ion); + m_user_regions.append(region); } void MemoryManager::unregister_region(Region& region) { ScopedSpinLock lock(s_mm_lock); if (region.is_kernel()) - m_kernel_regions.remove(®ion); + m_kernel_regions.remove(region); else - m_user_regions.remove(®ion); + m_user_regions.remove(region); } void MemoryManager::dump_kernel_regions() diff --git a/Kernel/VM/MemoryManager.h b/Kernel/VM/MemoryManager.h index 0800428f27..5f68538e1a 100644 --- a/Kernel/VM/MemoryManager.h +++ b/Kernel/VM/MemoryManager.h @@ -233,8 +233,8 @@ private: NonnullRefPtrVector m_user_physical_regions; NonnullRefPtrVector m_super_physical_regions; - InlineLinkedList m_user_regions; - InlineLinkedList m_kernel_regions; + Region::List m_user_regions; + Region::List m_kernel_regions; Vector m_used_memory_ranges; Vector m_physical_memory_ranges; Vector m_reserved_memory_ranges; diff --git a/Kernel/VM/Region.h b/Kernel/VM/Region.h index 2bdfad6d2d..ecbe758179 100644 --- a/Kernel/VM/Region.h +++ b/Kernel/VM/Region.h @@ -7,7 +7,7 @@ #pragma once #include -#include +#include #include #include #include @@ -29,8 +29,7 @@ enum class ShouldFlushTLB { }; class Region final - : public InlineLinkedListNode - , public Weakable + : public Weakable , public PurgeablePageRanges { friend class MemoryManager; @@ -211,10 +210,6 @@ public: void remap(); - // For InlineLinkedListNode - Region* m_next { nullptr }; - Region* m_prev { nullptr }; - bool remap_vmobject_page_range(size_t page_index, size_t page_count); bool is_volatile(VirtualAddress vaddr, size_t size) const; @@ -267,6 +262,10 @@ private: bool m_mmap : 1 { false }; bool m_syscall_region : 1 { false }; WeakPtr m_owner; + IntrusiveListNode m_list_node; + +public: + using List = IntrusiveList, &Region::m_list_node>; }; AK_ENUM_BITWISE_OPERATORS(Region::Access)