TD3:I6 Use PageProvider in AddrSpace

First Working version, need better error handling
This commit is contained in:
Yorick Barbanneau 2021-12-07 23:54:07 +01:00
parent 7deeec90f1
commit f7eca8c6ac
5 changed files with 16 additions and 9 deletions

View file

@ -4,6 +4,7 @@
#include "system.h"
PageProvider::PageProvider(int n) {
DEBUG ('x', "PageProvider constructor, pages: %i\n", n);
page = new BitMap(n);
page->Mark(0);
}
@ -13,12 +14,13 @@ PageProvider::~PageProvider(){
}
int PageProvider::GetEmptyPage() {
int page = page->Find();
if(emptyPage != -1)
DEBUG ('x', "GetEmptyPage()\n");
int newPage = page->Find();
if(newPage == -1)
return -1;
memset(machine->mainMemory+emptyPage * PageSize, 0, PageSize);
DEBUG ('a', "Allocated page: %i\n", page);
return page;
memset(machine->mainMemory+newPage * PageSize, 0, PageSize);
DEBUG ('x', "PageProvider: Allocated page: %i\n", newPage);
return newPage;
}
void PageProvider::ReleasePage(int n) {