kernel/vm: Make vm_page::physical_page_number const.

For safety.
This commit is contained in:
Augustin Cavalier
2026-07-17 16:55:42 -04:00
parent ba3a7735b4
commit 22b415d0c7
2 changed files with 11 additions and 10 deletions
+7 -6
View File
@@ -113,9 +113,9 @@ struct VMCacheRef {
struct vm_page {
DoublyLinkedListLink<vm_page> queue_link;
const page_num_t physical_page_number;
page_num_t physical_page_number;
DoublyLinkedListLink<vm_page> queue_link;
private:
VMCacheRef* cache_ref;
@@ -153,7 +153,7 @@ public:
uint8 usage_count;
inline void Init(page_num_t pageNumber);
inline vm_page(page_num_t pageNumber);
VMCacheRef* CacheRef() const { return cache_ref; }
void SetCacheRef(VMCacheRef* cacheRef) { this->cache_ref = cacheRef; }
@@ -199,10 +199,11 @@ enum {
#define VM_PAGE_ALLOC_BUSY 0x00000020
inline void
vm_page::Init(page_num_t pageNumber)
inline
vm_page::vm_page(page_num_t pageNumber)
:
physical_page_number(pageNumber)
{
physical_page_number = pageNumber;
new(&mappings) vm_page_mappings();
SetCacheRef(NULL);
+4 -4
View File
@@ -1876,7 +1876,7 @@ free_cached_page(vm_page *page, bool dontWait)
static uint32
free_cached_pages(uint32 pagesToFree, bool dontWait)
{
vm_page marker;
vm_page marker(-1);
init_page_marker(marker);
forbid_page_faults();
@@ -2007,7 +2007,7 @@ full_scan_inactive_pages(page_stats& pageStats, int32 despairLevel)
// scale only when things get desperate.
uint32 maxToFlush = despairLevel <= 1 ? 32 : 10000;
vm_page marker;
vm_page marker(-1);
init_page_marker(marker);
VMPageQueue& queue = sInactivePageQueue;
@@ -2124,7 +2124,7 @@ full_scan_inactive_pages(page_stats& pageStats, int32 despairLevel)
static void
full_scan_active_pages(page_stats& pageStats, int32 despairLevel)
{
vm_page marker;
vm_page marker(-1);
init_page_marker(marker);
VMPageQueue& queue = sActivePageQueue;
@@ -2453,7 +2453,7 @@ vm_page_init(kernel_args *args)
// initialize the free page table
for (uint32 i = 0; i < sNumPages; i++) {
sPages[i].Init(sPhysicalPageOffset + i);
new(&sPages[i]) vm_page(sPhysicalPageOffset + i);
sFreePageQueue.Append(&sPages[i]);
#if VM_PAGE_ALLOCATION_TRACKING_AVAILABLE