NachOS/code/userprog/pageprovider.cc
2021-12-17 01:26:23 +01:00

34 lines
733 B
C++

#ifdef CHANGED
#include "bitmap.h"
#include "pageprovider.h"
#include "system.h"
PageProvider::PageProvider(int n) {
DEBUG ('p', "PageProvider constructor, pages: %i\n", n);
page = new BitMap(n);
page->Mark(0);
}
PageProvider::~PageProvider(){
delete page;
}
int PageProvider::GetEmptyPage() {
int newPage = page->Find();
if(newPage == -1)
return -1;
memset(machine->mainMemory+newPage * PageSize, 0, PageSize);
DEBUG ('p', "PageProvider: GetEmpryPage() allocated page: %i\n", newPage);
return newPage;
}
void PageProvider::ReleasePage(int n) {
DEBUG ('p', "Release page: %d\n", n);
page->Clear(n);
}
int PageProvider::NumAvailPage() {
return page->NumClear();
}
#endif //CHANGED