diff --git a/interrupt/epilogues.cc b/interrupt/epilogues.cc index 2dbcef5..fc035ee 100644 --- a/interrupt/epilogues.cc +++ b/interrupt/epilogues.cc @@ -4,12 +4,10 @@ #include "guard.h" extern Key kout_key; -extern TextStream kout; namespace Epilogues { void keyboard(Vault& g) { - (void)g; g.kout << kout_key.ascii() << endl << flush ; } diff --git a/interrupt/guard.cc b/interrupt/guard.cc index 5d9333b..c172143 100644 --- a/interrupt/guard.cc +++ b/interrupt/guard.cc @@ -32,7 +32,7 @@ Guarded Guard::enter() { void Guard::leave() { bool istate = Core::Interrupt::disable(); - + Epilogue next; while(epilogue_queue FOR_CURRENT_CORE.consume(next)){ Core::Interrupt::enable(); @@ -53,15 +53,19 @@ void Guard::relay(Epilogue handler) { // handler(global_vault); // leave(); //} + Core::Interrupt::enable(); // goto level 0.5 if(epi_flag FOR_CURRENT_CORE){ epilogue_queue->produce(handler); } else{ epi_flag FOR_CURRENT_CORE = true; + global_lock.lock(); handler(global_vault); - leave(); // maybe not needed since destructor also calls leave + global_lock.unlock(); } + epilogue_queue->consume(handler); + } const Vault &Guard::unsafeConstAccess() { return global_vault; } diff --git a/interrupt/handlers.cc b/interrupt/handlers.cc index 68265e4..4e0e87d 100644 --- a/interrupt/handlers.cc +++ b/interrupt/handlers.cc @@ -73,7 +73,6 @@ enum PAGE_FAULT_ERROR { kernelpanic("Page fault!"); } -extern TextStream kout; extern Ticketlock koutlock; extern Vault keyboard_vault; diff --git a/tools/remote.mk b/tools/remote.mk index 4274413..7945dcf 100644 --- a/tools/remote.mk +++ b/tools/remote.mk @@ -1,7 +1,7 @@ # Test your system on real hardware NETBOOT_LOCAL="/ibr/adm/user-boot/" -NETBOOT_HOST="y0085044@x1.ibr.cs.tu-bs.de" +NETBOOT_HOST="y0080589@x1.ibr.cs.tu-bs.de" # The boot menu shows pairs of `vmlinuz-*` + `initrd-*.img` with owning user and timestamp. # We just need to choose a name that doesn't overlap with another user's. diff --git a/user/app1/appl.cc b/user/app1/appl.cc index 1714e5e..8c6a37b 100644 --- a/user/app1/appl.cc +++ b/user/app1/appl.cc @@ -21,7 +21,6 @@ Ich bin Großmuttersniffer\n\ Und wacht sie aus'm Koma auf, kriegt sie von mir 'n Sticker\n\ \n"; -extern TextStream kout; extern Ticketlock koutlock; void activeWaitDelay(uint64_t cycles) { @@ -41,12 +40,13 @@ void Application::action() { // NOLINT Guarded g = Guard::enter(); //g.vault(); while(text[cnt++] != '\n'){ - g.vault().kout << text[cnt-1]; + g.vault().kout << cnt; } - g.vault().kout << endl << flush; + //g.vault().kout << endl << flush; //Guard::leave(); //koutlock.unlock(); } + Core::pause(); activeWaitDelay(1000000000); if(cnt >= sizeof(text)-1) cnt=0;