TD3:I5 Implement PageProvide, untested for now
This commit is contained in:
parent
f3fe45a1de
commit
469c62ee82
5 changed files with 65 additions and 2 deletions
33
code/userprog/pageprovider.cc
Normal file
33
code/userprog/pageprovider.cc
Normal file
|
@ -0,0 +1,33 @@
|
|||
#ifdef CHANGED
|
||||
#include "bitmap.h"
|
||||
#include "pageprovider.h"
|
||||
#include "system.h"
|
||||
|
||||
PageProvider::PageProvider(int n) {
|
||||
page = new BitMap(n);
|
||||
page->Mark(0);
|
||||
}
|
||||
|
||||
PageProvider::~PageProvider(){
|
||||
delete page;
|
||||
}
|
||||
|
||||
int PageProvider::GetEmptyPage() {
|
||||
int page = page->Find();
|
||||
if(emptyPage != -1)
|
||||
return -1;
|
||||
memset(machine->mainMemory+emptyPage * PageSize, 0, PageSize);
|
||||
DEBUG ('a', "Allocated page: %i\n", page);
|
||||
return page;
|
||||
}
|
||||
|
||||
void PageProvider::ReleasePage(int n) {
|
||||
DEBUG ('a', "Release page: %i\n", page);
|
||||
page->Clear(n);
|
||||
}
|
||||
|
||||
int PageProvider::NumAvailPage() {
|
||||
return page->NumClear();
|
||||
}
|
||||
|
||||
#endif //CHANGED
|
Loading…
Add table
Add a link
Reference in a new issue