From 9c856811b2ad18b933fc1d9d5b8a771893fa7d9c Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 28 Apr 2020 16:19:50 +0200 Subject: Kernel: Add Region helpers for accessing underlying physical pages Since a Region is basically a view into a potentially larger VMObject, it was always necessary to include the Region starting offset when accessing its underlying physical pages. Until now, you had to do that manually, but this patch adds a simple Region::physical_page() for read-only access and a physical_page_slot() when you want a mutable reference to the RefPtr itself. A lot of code is simplified by making use of this. --- Kernel/FileSystem/ProcFS.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'Kernel/FileSystem') diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index b912728f9f..927383dd45 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -319,11 +319,10 @@ Optional procfs$pid_vm(InodeIdentifier identifier) StringBuilder pagemap_builder; for (size_t i = 0; i < region.page_count(); ++i) { - auto page_index = region.first_page_index() + i; - auto& physical_page_slot = region.vmobject().physical_pages()[page_index]; - if (!physical_page_slot) + auto* page = region.physical_page(i); + if (!page) pagemap_builder.append('N'); - else if (physical_page_slot == MM.shared_zero_page()) + else if (page->is_shared_zero_page()) pagemap_builder.append('Z'); else pagemap_builder.append('P'); -- cgit v1.2.3