Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protected boolean loadSections() {
- UserKernel.availablePageLock.acquire();
- if (numPages > UserKernel.availablePages.size()) {
- coff.close();
- Lib.debug(dbgProcess, "\tinsufficient physical memory");
- UserKernel.availablePageLock.release();
- return false;
- }
- pageTable = new TranslationEntry[numPages];
- for (int i=0; i< numPages; i++)
- pageTable[i] = new TranslationEntry(i,UserKernel.availablePages.remove(), true,false,false,false);
- UserKernel.availablePageLock.release();
- // load sections
- for (int s=0; s<coff.getNumSections(); s++) {
- CoffSection section = coff.getSection(s);
- Lib.debug(dbgProcess, "\tinitializing " + section.getName()
- + " section (" + section.getLength() + " pages)");
- for (int i=0; i<section.getLength(); i++) {
- int vpn = section.getFirstVPN()+i;
- //int ppn = UserKernel.availablePages.remove().ppn;
- pageTable[vpn].readOnly = section.isReadOnly();
- // for now, just assume virtual addresses=physical addresses
- section.loadPage(i, pageTable[vpn].ppn);
- }
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement