From 7deeec90f14b32d84e81042fb2c28f1b8c33447c Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Tue, 14 Dec 2021 22:56:21 +0100 Subject: [PATCH] TD3:I5 put PageProvider in the right place --- code/machine/machine.cc | 6 +----- code/machine/machine.h | 3 --- code/threads/system.cc | 10 +++++++++- code/threads/system.h | 4 +++- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/code/machine/machine.cc b/code/machine/machine.cc index 6593c34..2ab5d32 100644 --- a/code/machine/machine.cc +++ b/code/machine/machine.cc @@ -61,11 +61,7 @@ Machine::Machine(bool debug) mainMemory = new char[MemorySize]; for (i = 0; i < MemorySize; i++) mainMemory[i] = 0; - #ifdef CHANGED - pageProvider = new PageProvider((int)(MemorySize/PageSize)); - #endif - DEBUG ('a', "Allocated page: %i\n", page); -#ifdef USE_TLB + #ifdef USE_TLB tlb = new TranslationEntry[TLBSize]; for (i = 0; i < TLBSize; i++) tlb[i].valid = FALSE; diff --git a/code/machine/machine.h b/code/machine/machine.h index 5e00f85..5422e22 100644 --- a/code/machine/machine.h +++ b/code/machine/machine.h @@ -205,9 +205,6 @@ class Machine:public dontcopythis { TranslationEntry *currentPageTable; unsigned int currentPageTableSize; - #ifdef CHANGED - PageProvider * pageProvider; - #endif // CHANGED private: bool singleStep; // drop back into the debugger after each // simulated instruction diff --git a/code/threads/system.cc b/code/threads/system.cc index cdf04fd..5455f8a 100644 --- a/code/threads/system.cc +++ b/code/threads/system.cc @@ -36,6 +36,7 @@ Machine *machine; // user program memory and registers #ifdef CHANGED // Define our consoledriver Object ConsoleDriver *consoledriver; +PageProvider *pageProvider; #endif // CHANGED #endif // USER_PROGRAM @@ -184,8 +185,11 @@ Initialize (int argc, char **argv) #ifdef USER_PROGRAM machine = new Machine (debugUserProg); // this must come first -#endif + #ifdef CHANGED + pageProvider = new PageProvider((int)(MemorySize/PageSize)); + #endif //CHANGED +#endif #ifdef FILESYS synchDisk = new SynchDisk ("DISK"); #endif @@ -240,6 +244,10 @@ Cleanup () delete consoledriver; consoledriver = NULL; } + if (pageProvider){ + delete pageProvider; + pageProvider = NULL; + } #endif #endif diff --git a/code/threads/system.h b/code/threads/system.h index 763f5d3..2461e18 100644 --- a/code/threads/system.h +++ b/code/threads/system.h @@ -37,7 +37,9 @@ extern Machine *machine; // user program memory and registers #define MAX_STRING_SIZE 8 #include "consoledriver.h" extern ConsoleDriver *consoledriver; // add console driver -#endif +#include "pageprovider.h" +extern PageProvider *pageProvider; // add our page provider +#endif //CHANGED #endif