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