From 4b228ce301543783942375252a9821d7c9500629 Mon Sep 17 00:00:00 2001 From: ChUrl Date: Thu, 8 Dec 2022 17:14:06 +0100 Subject: [PATCH] Implement SchedulerService --- src/main.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main.cc b/src/main.cc index 988d032..6be9f96 100755 --- a/src/main.cc +++ b/src/main.cc @@ -18,6 +18,7 @@ #include "lib/util/System.h" #include "kernel/system/System.h" #include "kernel/service/InterruptService.h" +#include "kernel/service/SchedulerService.h" // TODO: Read from file void print_startup_message() { @@ -50,10 +51,10 @@ int main() { // Speicherverwaltung initialisieren Kernel::allocator.init(); // TODO: MemoryService - Kernel::scheduler.init(); // TODO: SchedulerService Kernel::kevman.init(); // TODO: EventService Kernel::System::registerService(); + Kernel::System::registerService(); // Tastatur-Unterbrechungsroutine 'einstoepseln' Kernel::kb.plugin(); @@ -69,11 +70,9 @@ int main() { // Startmeldung print_startup_message(); - // TODO: SchedulerService - // Scheduler starten (schedule() erzeugt den Idle-Thread) - Kernel::scheduler.ready(); // NOTE: A thread that manages other threads has to be added before scheduler.schedule(), - // because scheduler.schedule() doesn't return, only threads get cpu time - Kernel::scheduler.schedule(); + auto &schedulerService = Kernel::System::getService(); + schedulerService.ready(); + schedulerService.startScheduling(); // NOTE: Pre-Post ToDo's // DONE: Reorganize the project similar to hhuOS: @@ -89,6 +88,7 @@ int main() { // TODO: Investigate: C++20 (I wanted to use reference optionals somewhere...) // TODO: Rearrange code inside classes (public structs, public functions, private structs, private functions, private variables) // TODO: Write documentation comments + // TODO: Investigate what stuff has to be synchronized... // NOTE: Post ToDo's // TODO: Investigate the memory cleanup (esp. with threads), I guess the whole thing is a memory leak currently lol @@ -108,6 +108,7 @@ int main() { // There should be in/out/err system streams, stream for serial, with filesystem also filestreams // Investigate StreamWriter, StreamReader, Buffered, Synchronized etc... // Objects (e.g. Logger) should be able to just work on streams that will be passed in + // Also change Logger to lib/util Util:: namespace and streams to lib/stream Stream:: // NOTE: Large post ToDo's // TODO: Add a RB-Tree datastructure and use it for memory management?