page table testing

This commit is contained in:
2026-01-28 20:49:24 +11:00
parent e4620f60c9
commit 1ef6ed223e
11 changed files with 42 additions and 17 deletions

View File

@@ -57,9 +57,10 @@ void PageFrameAllocator::FreePage(void* address) {
if (PageBitmap[index] == false) return; // page is already free
// free page in bitmap
PageBitmap.Set(index, false);
freeMemory += 4096;
usedMemory -= 4096;
if (PageBitmap.Set(index, false)) {
freeMemory += 4096;
usedMemory -= 4096;
}
}
void PageFrameAllocator::FreePages(void* address, uint64_t pageCount) {
@@ -73,9 +74,10 @@ void PageFrameAllocator::LockPage(void* address) {
if (PageBitmap[index] == true) return; // page is already locked
// lock page in bitmap
PageBitmap.Set(index, true);
freeMemory -= 4096;
usedMemory += 4096;
if (PageBitmap.Set(index, true)) {
freeMemory -= 4096;
usedMemory += 4096;
}
}
void PageFrameAllocator::LockPages(void* address, uint64_t pageCount) {
@@ -89,9 +91,10 @@ void PageFrameAllocator::UnreservePage(void* address) {
if (PageBitmap[index] == false) return; // page is already free
// free page in bitmap
PageBitmap.Set(index, false);
freeMemory += 4096;
reservedMemory -= 4096;
if (PageBitmap.Set(index, false)) {
freeMemory += 4096;
reservedMemory -= 4096;
}
}
void PageFrameAllocator::UnreservePages(void* address, uint64_t pageCount) {
@@ -105,9 +108,10 @@ void PageFrameAllocator::ReservePage(void* address) {
if (PageBitmap[index] == true) return; // page is already locked
// lock page in bitmap
PageBitmap.Set(index, true);
freeMemory -= 4096;
reservedMemory += 4096;
if (PageBitmap.Set(index, true)) {
freeMemory -= 4096;
reservedMemory += 4096;
}
}
void PageFrameAllocator::ReservePages(void* address, uint64_t pageCount) {