From 99d29e48aca56e8be8b9ee096a7da4bfa92893cc Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Thu, 14 Apr 2016 02:36:26 -0400 Subject: [PATCH] Fix stupid page allocator bitmap silliness --- src/memory/FrameAllocator.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/memory/FrameAllocator.cc b/src/memory/FrameAllocator.cc index 278873d..55c3413 100644 --- a/src/memory/FrameAllocator.cc +++ b/src/memory/FrameAllocator.cc @@ -52,17 +52,22 @@ FrameAllocator::allocate() { // Find the first bitmap with a free slot, and the first free slot, and return it. const u32 pagesPerBitmap = Bitmap::length; - for (usize i = 0; i < mNumberOfPages; i += pagesPerBitmap) { + for (usize i = 0; i < mNumberOfPages; i++) { auto bitmap = mBitmap[i]; if (!bitmap.isFull()) { + kstd::printFormat("Found partially full bitmap %ld -> %02X\n", i, u8(bitmap)); for (usize j = 0; j < pagesPerBitmap; j++) { if (!bitmap.isSet(j)) { bitmap.set(j); - return addressOfPage(i * pagesPerBitmap + j); + usize page = i * pagesPerBitmap + j; + void* pageAddress = addressOfPage(page); + kstd::printFormat("Allocating frame for page %ld at address 0x%08lX\n", page, u32(pageAddress)); + return pageAddress; } } } } + kstd::printFormat("Couldn't allocate frame\n"); return nullptr; }