From 30a48d25d2145757d5cf195e46b248d2ff07b3b0 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Mon, 12 Jan 2026 14:58:23 +0100 Subject: [PATCH] remove bitmap --- kernel/memory/pageframe.h | 4 +++- kernel/memory/pageframealloc.cc | 32 ++++++++++++++++---------------- kernel/memory/pageframealloc.h | 1 + 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/kernel/memory/pageframe.h b/kernel/memory/pageframe.h index 9b1eacf..8dd26c5 100644 --- a/kernel/memory/pageframe.h +++ b/kernel/memory/pageframe.h @@ -5,10 +5,12 @@ class PageFrame { private: + public: uintptr_t address; uintptr_t mapped_address; - public: + bool available; PageFrame* queue_link; + PageFrame(){}; PageFrame(uintptr_t a):address(a){}; uintptr_t getAddr(){return address;}; uintptr_t getVirtualAddr(){return address;}; diff --git a/kernel/memory/pageframealloc.cc b/kernel/memory/pageframealloc.cc index ccb9099..1a0a05c 100644 --- a/kernel/memory/pageframealloc.cc +++ b/kernel/memory/pageframealloc.cc @@ -8,9 +8,8 @@ #include "../arch/lapic.h" #include "../arch/apic.h" -uint8_t PageFrameAllocator::bitmap[4294967296 / 4096 / 8]; - -//PageFrame PageFrameList[4294967296 / 4096]; +//uint8_t PageFrameAllocator::bitmap[4294967296 / 4096 / 8]; +PageFrame PageFrameAllocator::PageFrames[4294967296 / 4096]; void mark_pageframes(uintptr_t start, uintptr_t end, bool available){ DBG << "start: " << hex << start << " end: " << end; @@ -20,10 +19,12 @@ void mark_pageframes(uintptr_t start, uintptr_t end, bool available){ for(uint64_t i = start; i < end; i += 4096){ uint64_t pg = i/4096; - if(available) - PageFrameAllocator::bitmap[pg/8] |= (1 << pg%8); - else - PageFrameAllocator::bitmap[pg/8] &= ~(1 << pg%8); + + PageFrameAllocator::PageFrames[pg].available = available; + //if(available) + // PageFrameAllocator::bitmap[pg/8] |= (1 << pg%8); + //else + // PageFrameAllocator::bitmap[pg/8] &= ~(1 << pg%8); } } @@ -83,8 +84,9 @@ void PageFrameAllocator::stats(){ } uint64_t pages_available = 0; - for(uint64_t i=0; i PageFrameList; void init ();