Advertisement
Guest User

Untitled

a guest
Mar 28th, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. protected boolean loadSections() {
  2.  
  3. UserKernel.availablePageLock.acquire();
  4. if (numPages > UserKernel.availablePages.size()) {
  5. coff.close();
  6. Lib.debug(dbgProcess, "\tinsufficient physical memory");
  7. UserKernel.availablePageLock.release();
  8. return false;
  9. }
  10. pageTable = new TranslationEntry[numPages];
  11. for (int i=0; i< numPages; i++)
  12. pageTable[i] = new TranslationEntry(i,UserKernel.availablePages.remove(), true,false,false,false);
  13. UserKernel.availablePageLock.release();
  14. // load sections
  15. for (int s=0; s<coff.getNumSections(); s++) {
  16. CoffSection section = coff.getSection(s);
  17.  
  18. Lib.debug(dbgProcess, "\tinitializing " + section.getName()
  19. + " section (" + section.getLength() + " pages)");
  20.  
  21. for (int i=0; i<section.getLength(); i++) {
  22. int vpn = section.getFirstVPN()+i;
  23.  
  24. //int ppn = UserKernel.availablePages.remove().ppn;
  25. pageTable[vpn].readOnly = section.isReadOnly();
  26.  
  27. // for now, just assume virtual addresses=physical addresses
  28. section.loadPage(i, pageTable[vpn].ppn);
  29. }
  30. }
  31.  
  32. return true;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement