diff --git a/src/device/time/PIT.cc b/src/device/time/PIT.cc index f6177dc..d002196 100755 --- a/src/device/time/PIT.cc +++ b/src/device/time/PIT.cc @@ -12,6 +12,7 @@ #include "kernel/system/Globals.h" #include "kernel/system/System.h" #include "kernel/service/InterruptService.h" +#include "kernel/service/SchedulerService.h" namespace Device { @@ -72,11 +73,7 @@ void PIT::trigger() { // log << TRACE << "Incrementing systime" << endl; // alle 10ms, Systemzeit weitersetzen - Kernel::systime++; - - // Bei jedem Tick einen Threadwechsel ausloesen. - // Aber nur wenn der Scheduler bereits fertig intialisiert wurde - // und ein weiterer Thread rechnen moechte + Kernel::systime++; // TODO: Timeservice /* hier muss Code eingefuegt werden */ @@ -88,12 +85,9 @@ void PIT::trigger() { last_indicator_refresh = Kernel::systime; } - // TODO: Use schedulerservice // Preemption - if (Kernel::scheduler.preemption_enabled()) { - // log << TRACE << "Preemption" << endl; - Kernel::scheduler.preempt(); - } + auto &schedulerService = Kernel::System::getService(); + schedulerService.yield(); } } diff --git a/src/kernel/event/KeyEventListener.cc b/src/kernel/event/KeyEventListener.cc index 226650d..c570978 100644 --- a/src/kernel/event/KeyEventListener.cc +++ b/src/kernel/event/KeyEventListener.cc @@ -1,5 +1,7 @@ #include "kernel/event/KeyEventListener.h" #include "kernel/system/Globals.h" +#include "kernel/service/SchedulerService.h" +#include "kernel/system/System.h" namespace Kernel { @@ -9,7 +11,8 @@ void KeyEventListener::trigger(char c) { char KeyEventListener::waitForKeyEvent() const { Logger::instance() << DEBUG << "KEvLis:: Thread with id: " << tid << " waiting for key event" << endl; - scheduler.block(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.block(); return lastChar; // This is only executed after thread is woken up by manager } diff --git a/src/kernel/event/KeyEventManager.cc b/src/kernel/event/KeyEventManager.cc index 1a1d8c4..3f9a33f 100644 --- a/src/kernel/event/KeyEventManager.cc +++ b/src/kernel/event/KeyEventManager.cc @@ -1,5 +1,7 @@ #include "KeyEventManager.h" #include "kernel/system/Globals.h" +#include "kernel/service/SchedulerService.h" +#include "kernel/system/System.h" namespace Kernel { @@ -20,10 +22,11 @@ void KeyEventManager::unsubscribe(KeyEventListener &unsub) { void KeyEventManager::broadcast(char c) { log.trace() << "Beginning Broadcast" << endl; + auto &schedulerService = Kernel::System::getService(); for (KeyEventListener *listener: listeners) { log.trace() << "Broadcasting " << c << " to Thread ID: " << dec << listener->tid << endl; listener->trigger(c); - scheduler.deblock(listener->tid); + schedulerService.deblock(listener->tid); } } diff --git a/src/kernel/event/KeyEventManager.h b/src/kernel/event/KeyEventManager.h index 8adfc92..0b26f59 100644 --- a/src/kernel/event/KeyEventManager.h +++ b/src/kernel/event/KeyEventManager.h @@ -19,7 +19,7 @@ private: public: KeyEventManager(const KeyEventManager ©) = delete; - KeyEventManager() : log("KEvMan"), listeners(true) {} + KeyEventManager() : log("KEvMan") {} void init() { listeners.reserve(); diff --git a/src/lib/async/Semaphore.cc b/src/lib/async/Semaphore.cc index c559da6..edd6816 100644 --- a/src/lib/async/Semaphore.cc +++ b/src/lib/async/Semaphore.cc @@ -1,5 +1,7 @@ #include "Semaphore.h" #include "kernel/system/Globals.h" +#include "kernel/service/SchedulerService.h" +#include "kernel/system/System.h" namespace Async { @@ -16,11 +18,12 @@ void Semaphore::p() { if (!wait_queue.initialized()) { // TODO: I will replace this suboptimal datastructure in the future wait_queue.reserve(); } - wait_queue.push_back(Kernel::scheduler.get_active()); + auto &schedulerService = Kernel::System::getService(); + wait_queue.push_back(schedulerService.active()); Device::CPU::disable_int(); // Make sure the block() comes through after releasing the lock lock.release(); - Kernel::scheduler.block(); // Moves to next thread, enables int + schedulerService.block(); // Moves to next thread, enables int } } @@ -34,7 +37,9 @@ void Semaphore::v() { Device::CPU::disable_int(); // Make sure the deblock() comes through after releasing the lock lock.release(); - Kernel::scheduler.deblock(tid); // Enables int + + auto &schedulerService = Kernel::System::getService(); + schedulerService.deblock(tid); // Enables int } else { // No more threads want to work so free semaphore counter = counter + 1; diff --git a/src/lib/async/Semaphore.h b/src/lib/async/Semaphore.h index 1eff5eb..8a86fb3 100755 --- a/src/lib/async/Semaphore.h +++ b/src/lib/async/Semaphore.h @@ -29,7 +29,7 @@ public: Semaphore(const Semaphore ©) = delete; // Verhindere Kopieren // Konstruktor: Initialisieren des Semaphorzaehlers - Semaphore(int c) : wait_queue(true), counter(c) {} + explicit Semaphore(int c) : counter(c) {} // 'Passieren': Warten auf das Freiwerden eines kritischen Abschnitts. void p(); diff --git a/src/lib/demo/ArrayDemo.cc b/src/lib/demo/ArrayDemo.cc index 11a2520..79430ec 100644 --- a/src/lib/demo/ArrayDemo.cc +++ b/src/lib/demo/ArrayDemo.cc @@ -1,5 +1,7 @@ #include "ArrayDemo.h" #include "lib/util/System.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" void ArrayDemo::run() { Container::Array arr1{}; @@ -37,5 +39,6 @@ void ArrayDemo::run() { // arr1.swap(arr3); // Not possible as type/size has to match Util::System::out.unlock(); - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/ArrayDemo.h b/src/lib/demo/ArrayDemo.h index 71e8c29..921a300 100644 --- a/src/lib/demo/ArrayDemo.h +++ b/src/lib/demo/ArrayDemo.h @@ -6,9 +6,9 @@ class ArrayDemo : public Kernel::Thread { public: - ArrayDemo(const ArrayDemo& copy) = delete; + ArrayDemo(const ArrayDemo ©) = delete; - ArrayDemo() : Thread("ArrayDemo") {} + ArrayDemo() = default; void run() override; }; diff --git a/src/lib/demo/HeapDemo.cc b/src/lib/demo/HeapDemo.cc index 14f88f7..dc9e363 100755 --- a/src/lib/demo/HeapDemo.cc +++ b/src/lib/demo/HeapDemo.cc @@ -10,6 +10,8 @@ #include "HeapDemo.h" #include "lib/util/System.h" +#include "kernel/service/SchedulerService.h" +#include "kernel/system/System.h" void HeapDemo::run() { Util::System::out.lock(); @@ -75,5 +77,7 @@ void HeapDemo::run() { Util::System::out << "HEAP_DEMO END ===============================================================" << endl; Util::System::out.unlock(); - Kernel::scheduler.exit(); + + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/HeapDemo.h b/src/lib/demo/HeapDemo.h index 054debc..1993936 100755 --- a/src/lib/demo/HeapDemo.h +++ b/src/lib/demo/HeapDemo.h @@ -16,15 +16,16 @@ class MyObj { public: constexpr MyObj() : value(5) {}; + constexpr MyObj(const unsigned int val) : value(val) {}; const unsigned int value; }; class HeapDemo : public Kernel::Thread { public: - HeapDemo(const HeapDemo& copy) = delete; + HeapDemo(const HeapDemo ©) = delete; - HeapDemo() : Thread("HeapDemo") {} + HeapDemo() = default; void run() override; }; diff --git a/src/lib/demo/KeyboardDemo.cc b/src/lib/demo/KeyboardDemo.cc index 7d1582e..1a1d4ed 100755 --- a/src/lib/demo/KeyboardDemo.cc +++ b/src/lib/demo/KeyboardDemo.cc @@ -9,6 +9,8 @@ *****************************************************************************/ #include "KeyboardDemo.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" void KeyboardDemo::run() { @@ -30,5 +32,6 @@ void KeyboardDemo::run() { } Util::System::out.unlock(); - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/KeyboardDemo.h b/src/lib/demo/KeyboardDemo.h index f4edcc8..15030a3 100755 --- a/src/lib/demo/KeyboardDemo.h +++ b/src/lib/demo/KeyboardDemo.h @@ -23,7 +23,7 @@ private: public: KeyboardDemo(const KeyboardDemo ©) = delete; - KeyboardDemo() : Thread("KeyboardDemo"), listener(tid) { + KeyboardDemo() : listener(tid) { Kernel::kevman.subscribe(listener); } diff --git a/src/lib/demo/MainMenu.cc b/src/lib/demo/MainMenu.cc index 70a768d..2c7d03d 100644 --- a/src/lib/demo/MainMenu.cc +++ b/src/lib/demo/MainMenu.cc @@ -10,6 +10,8 @@ #include "TextDemo.h" #include "VBEdemo.h" #include "VectorDemo.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" void print_demo_menu() { Util::System::out.lock(); @@ -36,55 +38,56 @@ void MainMenu::run() { char input = '\0'; unsigned int running_demo = 0; + auto &schedulerService = Kernel::System::getService(); while (running) { input = listener.waitForKeyEvent(); if ((input >= '0' && input <= '9') || input == '!') { switch (input) { case '1': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; case '2': - running_demo = Kernel::scheduler.ready(&Device::PCSPK::aerodynamic); + running_demo = schedulerService.ready(&Device::PCSPK::aerodynamic); break; case '3': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; case '4': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; case '5': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; case '6': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; case '7': - running_demo = Kernel::scheduler.ready(3); + running_demo = schedulerService.ready(3); break; case '8': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; case '9': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; case '0': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; case '!': - running_demo = Kernel::scheduler.ready(); + running_demo = schedulerService.ready(); break; } } else if (input == 'k') { - Kernel::scheduler.nice_kill(running_demo); // NOTE: If thread exits itself this will throw error + schedulerService.suicide(running_demo); // NOTE: If thread exits itself this will throw error print_demo_menu(); } else if (input == 'K') { - Kernel::scheduler.kill(running_demo); + schedulerService.kill(running_demo); print_demo_menu(); } } - Kernel::scheduler.exit(); + schedulerService.exit(); // This thread won't be deleted... } diff --git a/src/lib/demo/MainMenu.h b/src/lib/demo/MainMenu.h index 9b23b92..c99a27e 100644 --- a/src/lib/demo/MainMenu.h +++ b/src/lib/demo/MainMenu.h @@ -10,9 +10,9 @@ private: Kernel::KeyEventListener listener; public: - MainMenu(const MainMenu& copy) = delete; + MainMenu(const MainMenu ©) = delete; - MainMenu() : Thread("MainMenu"), listener(tid) { + MainMenu() : listener(tid) { Kernel::kevman.subscribe(listener); } diff --git a/src/lib/demo/PCSPKdemo.cc b/src/lib/demo/PCSPKdemo.cc index 418aaef..f437c31 100644 --- a/src/lib/demo/PCSPKdemo.cc +++ b/src/lib/demo/PCSPKdemo.cc @@ -1,5 +1,7 @@ #include "PCSPKdemo.h" #include "lib/util/System.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" void PCSPKdemo::run() { Util::System::out.lock(); @@ -13,5 +15,6 @@ void PCSPKdemo::run() { Util::System::out << "Finished" << endl; Util::System::out.unlock(); - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/PCSPKdemo.h b/src/lib/demo/PCSPKdemo.h index 5d1fd27..a4c3a8c 100644 --- a/src/lib/demo/PCSPKdemo.h +++ b/src/lib/demo/PCSPKdemo.h @@ -9,9 +9,9 @@ private: void (*melody)(); // Allow to pass a melody to play when initializing the demo public: - PCSPKdemo(const PCSPKdemo& copy) = delete; + PCSPKdemo(const PCSPKdemo ©) = delete; - PCSPKdemo(void (*melody)()) : Thread("PCSPKdemo"), melody(melody) {} + PCSPKdemo(void (*melody)()) : melody(melody) {} ~PCSPKdemo() override { Device::PCSPK::off(); diff --git a/src/lib/demo/PagingDemo.cc b/src/lib/demo/PagingDemo.cc index a1b594b..26b2fb4 100644 --- a/src/lib/demo/PagingDemo.cc +++ b/src/lib/demo/PagingDemo.cc @@ -1,5 +1,9 @@ #include "PagingDemo.h" #include "lib/util/System.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" + +NamedLogger PagingDemo::log = NamedLogger("PagingDemo"); void PagingDemo::writeprotect_page() { Util::System::out << "Accessing a writeprotected page triggers bluescreen,\nif you can read this it didn't work" @@ -48,5 +52,6 @@ void PagingDemo::run() { break; } - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/PagingDemo.h b/src/lib/demo/PagingDemo.h index 64a9a4a..e78bc75 100644 --- a/src/lib/demo/PagingDemo.h +++ b/src/lib/demo/PagingDemo.h @@ -5,18 +5,22 @@ #include "kernel/process/Thread.h" #include "kernel/event/KeyEventListener.h" -class PagingDemo: public Kernel::Thread { +class PagingDemo : public Kernel::Thread { private: void writeprotect_page(); + void free_page(); + void notpresent_page(); Kernel::KeyEventListener listener; -public: - PagingDemo(const PagingDemo& copy) = delete; + static NamedLogger log; - PagingDemo(): Thread("PagingDemo"), listener(tid) { +public: + PagingDemo(const PagingDemo ©) = delete; + + PagingDemo() : listener(tid) { Kernel::kevman.subscribe(listener); } diff --git a/src/lib/demo/PreemptiveThreadDemo.cc b/src/lib/demo/PreemptiveThreadDemo.cc index 7329ebc..986d825 100644 --- a/src/lib/demo/PreemptiveThreadDemo.cc +++ b/src/lib/demo/PreemptiveThreadDemo.cc @@ -1,5 +1,7 @@ #include "PreemptiveThreadDemo.h" #include "lib/util/System.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" void PreemptiveLoopThread::run() { int cnt = 0; @@ -15,7 +17,8 @@ void PreemptiveLoopThread::run() { Util::System::out.unlock(); } - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } void PreemptiveThreadDemo::run() { @@ -25,11 +28,12 @@ void PreemptiveThreadDemo::run() { Util::System::out << "Preemptive Thread Demo:" << endl; Util::System::out << "Readying LoopThreads" << endl; + auto &schedulerService = Kernel::System::getService(); for (unsigned int i = 0; i < number_of_threads; ++i) { - Kernel::scheduler.ready(i); + schedulerService.ready(i); } Util::System::out << "Exiting main thread" << endl; Util::System::out.unlock(); - Kernel::scheduler.exit(); + schedulerService.exit(); } diff --git a/src/lib/demo/PreemptiveThreadDemo.h b/src/lib/demo/PreemptiveThreadDemo.h index f2789d8..7f4a43f 100644 --- a/src/lib/demo/PreemptiveThreadDemo.h +++ b/src/lib/demo/PreemptiveThreadDemo.h @@ -10,10 +10,10 @@ private: int id; public: - PreemptiveLoopThread(const PreemptiveLoopThread& copy) = delete; // Verhindere Kopieren + PreemptiveLoopThread(const PreemptiveLoopThread ©) = delete; // Verhindere Kopieren // Gibt der Loop einen Stack und eine Id. - PreemptiveLoopThread(int i) : Thread("LoopThread"), id(i) {} + PreemptiveLoopThread(int i) : id(i) {} // Zaehlt einen Zaehler hoch und gibt ihn auf dem Bildschirm aus. void run() override; @@ -24,9 +24,9 @@ private: unsigned int number_of_threads; public: - PreemptiveThreadDemo(const PreemptiveThreadDemo& copy) = delete; // Verhindere Kopieren + PreemptiveThreadDemo(const PreemptiveThreadDemo ©) = delete; // Verhindere Kopieren - PreemptiveThreadDemo(unsigned int n) : Thread("PreemptiveThreadDemo"), number_of_threads(n) {} + PreemptiveThreadDemo(unsigned int n) : number_of_threads(n) {} // Thread-Startmethode void run() override; diff --git a/src/lib/demo/SmartPointerDemo.cc b/src/lib/demo/SmartPointerDemo.cc index 99fe967..ad87732 100644 --- a/src/lib/demo/SmartPointerDemo.cc +++ b/src/lib/demo/SmartPointerDemo.cc @@ -2,6 +2,8 @@ #include "kernel/process/IdleThread.h" #include "lib/util/System.h" +NamedLogger SmartPointerDemo::log = NamedLogger("SmartPointerDemo"); + void SmartPointerDemo::run() { Util::System::out.lock(); Util::System::out.clear(); @@ -119,5 +121,6 @@ void SmartPointerDemo::run() { log.info() << "Should be deleted by now..." << endl; Util::System::out.unlock(); - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/SmartPointerDemo.h b/src/lib/demo/SmartPointerDemo.h index 901d53c..a40ee84 100644 --- a/src/lib/demo/SmartPointerDemo.h +++ b/src/lib/demo/SmartPointerDemo.h @@ -5,11 +5,14 @@ class SmartPointerDemo : public Kernel::Thread { public: - SmartPointerDemo(const SmartPointerDemo& copy) = delete; + SmartPointerDemo(const SmartPointerDemo ©) = delete; - SmartPointerDemo() : Thread("SmartPointerDemo") {} + SmartPointerDemo() = default; void run() override; + +private: + static NamedLogger log; }; #endif diff --git a/src/lib/demo/StringDemo.cc b/src/lib/demo/StringDemo.cc index f29cb3e..f8fa0c2 100644 --- a/src/lib/demo/StringDemo.cc +++ b/src/lib/demo/StringDemo.cc @@ -1,5 +1,9 @@ #include "StringDemo.h" #include "lib/util/System.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" + +NamedLogger StringDemo::log = NamedLogger("StringDemo"); void StringDemo::run() { Util::System::out.lock(); @@ -55,5 +59,6 @@ void StringDemo::run() { << static_cast(String::string(arr) == str2) << endl; Util::System::out.unlock(); - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/StringDemo.h b/src/lib/demo/StringDemo.h index d6700f7..a84b0c5 100644 --- a/src/lib/demo/StringDemo.h +++ b/src/lib/demo/StringDemo.h @@ -4,10 +4,13 @@ #include "kernel/system/Globals.h" class StringDemo : public Kernel::Thread { -public: - StringDemo(const StringDemo& copy) = delete; +private: + static NamedLogger log; - StringDemo() : Thread("StringDemo") {} +public: + StringDemo(const StringDemo ©) = delete; + + StringDemo() = default; void run() override; }; diff --git a/src/lib/demo/TextDemo.cc b/src/lib/demo/TextDemo.cc index 4db9185..5ae0629 100755 --- a/src/lib/demo/TextDemo.cc +++ b/src/lib/demo/TextDemo.cc @@ -10,6 +10,8 @@ #include "TextDemo.h" #include "lib/util/System.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" void TextDemo::run() { @@ -40,5 +42,6 @@ void TextDemo::run() { Util::System::out << endl; Util::System::out.unlock(); - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/TextDemo.h b/src/lib/demo/TextDemo.h index d0af458..60a5d3d 100755 --- a/src/lib/demo/TextDemo.h +++ b/src/lib/demo/TextDemo.h @@ -16,9 +16,9 @@ class TextDemo : public Kernel::Thread { public: - TextDemo(const TextDemo& copy) = delete; + TextDemo(const TextDemo ©) = delete; - TextDemo() : Thread("TextDemo") {} + TextDemo() = default; void run() override; }; diff --git a/src/lib/demo/VBEdemo.cc b/src/lib/demo/VBEdemo.cc index d3f058f..b720e58 100644 --- a/src/lib/demo/VBEdemo.cc +++ b/src/lib/demo/VBEdemo.cc @@ -10,6 +10,8 @@ #include "VBEdemo.h" #include "bmp_hhu.cc" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" /***************************************************************************** * Methode: VBEdemo::linInterPol1D * @@ -17,7 +19,9 @@ * Beschreibung: Farbwert in einer Dimension interpoliert berechnen. * *****************************************************************************/ int VBEdemo::linInterPol1D(int x, int xr, int l, int r) { - return ((((l >> 16) * (xr - x) + (r >> 16) * x) / xr) << 16) | (((((l >> 8) & 0xFF) * (xr - x) + ((r >> 8) & 0xFF) * x) / xr) << 8) | (((l & 0xFF) * (xr - x) + (r & 0xFF) * x) / xr); + return ((((l >> 16) * (xr - x) + (r >> 16) * x) / xr) << 16) | + (((((l >> 8) & 0xFF) * (xr - x) + ((r >> 8) & 0xFF) * x) / xr) << 8) | + (((l & 0xFF) * (xr - x) + (r & 0xFF) * x) / xr); } /***************************************************************************** @@ -56,7 +60,7 @@ void VBEdemo::drawBitmap() { unsigned int sprite_width = hhu.width; unsigned int sprite_height = hhu.height; unsigned int sprite_bpp = hhu.bytes_per_pixel; - const uint8_t* sprite_pixel = reinterpret_cast(hhu.pixel_data); + const uint8_t *sprite_pixel = reinterpret_cast(hhu.pixel_data); /* Hier muss Code eingefuegt werden */ @@ -98,5 +102,6 @@ void VBEdemo::run() { while (running) {} // selbst terminieren - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/VBEdemo.h b/src/lib/demo/VBEdemo.h index b5c99b6..dc30ac1 100644 --- a/src/lib/demo/VBEdemo.h +++ b/src/lib/demo/VBEdemo.h @@ -17,16 +17,18 @@ class VBEdemo : public Kernel::Thread { private: // Hilfsfunktionen fuer drawColors() static int linInterPol1D(int x, int xr, int l, int r); + static int linInterPol2D(int x, int y, int lt, int rt, int lb, int rb); public: - VBEdemo(const VBEdemo& copy) = delete; // Verhindere Kopieren + VBEdemo(const VBEdemo ©) = delete; // Verhindere Kopieren // Gib dem Anwendungsthread einen Stack. - VBEdemo() : Thread("VBEdemo") {} + VBEdemo() = default; ~VBEdemo() override { - Kernel::allocator.free(reinterpret_cast(Kernel::vesa.hfb)); // Memory is allocated after every start and never deleted, so add that + Kernel::allocator.free( + reinterpret_cast(Kernel::vesa.hfb)); // Memory is allocated after every start and never deleted, so add that Device::VESA::initTextMode(); } diff --git a/src/lib/demo/VectorDemo.cc b/src/lib/demo/VectorDemo.cc index 007c109..53e2f9b 100644 --- a/src/lib/demo/VectorDemo.cc +++ b/src/lib/demo/VectorDemo.cc @@ -1,5 +1,9 @@ #include "VectorDemo.h" #include "lib/util/System.h" +#include "kernel/system/System.h" +#include "kernel/service/SchedulerService.h" + +NamedLogger VectorDemo::log = NamedLogger("VectorDemo"); void print(OutStream &os, const Container::Vector &list) { os << "Printing List: "; @@ -107,5 +111,6 @@ void VectorDemo::run() { } Util::System::out.unlock(); - Kernel::scheduler.exit(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.exit(); } diff --git a/src/lib/demo/VectorDemo.h b/src/lib/demo/VectorDemo.h index 028b777..4093dcc 100644 --- a/src/lib/demo/VectorDemo.h +++ b/src/lib/demo/VectorDemo.h @@ -7,11 +7,14 @@ class VectorDemo : public Kernel::Thread { public: - VectorDemo(const VectorDemo& copy) = delete; + VectorDemo(const VectorDemo ©) = delete; - VectorDemo() : Thread("VectorDemo") {} + VectorDemo() = default; void run() override; + +private: + static NamedLogger log; }; #endif