static logger
This commit is contained in:
@ -29,6 +29,7 @@ Scheduler scheduler;
|
|||||||
|
|
||||||
KeyEventManager kevman;
|
KeyEventManager kevman;
|
||||||
SerialOut serial;
|
SerialOut serial;
|
||||||
|
Logger& logger = Logger::instance();
|
||||||
|
|
||||||
unsigned int total_mem; // RAM total
|
unsigned int total_mem; // RAM total
|
||||||
unsigned long systime = 0;
|
unsigned long systime = 0;
|
||||||
|
|||||||
@ -26,6 +26,8 @@
|
|||||||
#include "user/devices/SerialOut.h"
|
#include "user/devices/SerialOut.h"
|
||||||
#include "user/event/KeyEventManager.h"
|
#include "user/event/KeyEventManager.h"
|
||||||
|
|
||||||
|
// I wanted to make more of these singletons but there were problems with atexit missing because of nostdlib I guess
|
||||||
|
|
||||||
extern CPU cpu; // CPU-spezifische Funktionen
|
extern CPU cpu; // CPU-spezifische Funktionen
|
||||||
extern CGA_Stream kout; // Ausgabe-Strom fuer Kernel
|
extern CGA_Stream kout; // Ausgabe-Strom fuer Kernel
|
||||||
extern BIOS bios; // Schnittstelle zum 16-Bit BIOS
|
extern BIOS bios; // Schnittstelle zum 16-Bit BIOS
|
||||||
@ -45,6 +47,7 @@ extern Scheduler scheduler;
|
|||||||
|
|
||||||
extern KeyEventManager kevman;
|
extern KeyEventManager kevman;
|
||||||
extern SerialOut serial;
|
extern SerialOut serial;
|
||||||
|
extern Logger& logger;
|
||||||
|
|
||||||
extern unsigned int total_mem; // RAM total
|
extern unsigned int total_mem; // RAM total
|
||||||
extern unsigned long systime; // wird all 10ms hochgezaehlt
|
extern unsigned long systime; // wird all 10ms hochgezaehlt
|
||||||
|
|||||||
@ -161,9 +161,9 @@ void pg_init() {
|
|||||||
// sodass genau der physikalische Adressraum abgedeckt ist?
|
// sodass genau der physikalische Adressraum abgedeckt ist?
|
||||||
num_pages = total_mem / (4096 * 1024);
|
num_pages = total_mem / (4096 * 1024);
|
||||||
|
|
||||||
Logger::instance() << INFO << "pg_init: " << total_mem << endl;
|
logger << INFO << "pg_init: " << total_mem << endl;
|
||||||
Logger::instance() << INFO << " total_mem: " << total_mem << endl;
|
logger << INFO << " total_mem: " << total_mem << endl;
|
||||||
Logger::instance() << INFO << " #pages: " << total_mem / (4096 * 1024) << endl;
|
logger << INFO << " #pages: " << total_mem / (4096 * 1024) << endl;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Aufbau des Page-Directory
|
// Aufbau des Page-Directory
|
||||||
|
|||||||
@ -13,7 +13,6 @@
|
|||||||
#define __Scheduler_include__
|
#define __Scheduler_include__
|
||||||
|
|
||||||
#include "kernel/threads/Thread.h"
|
#include "kernel/threads/Thread.h"
|
||||||
#include "lib/SpinLock.h"
|
|
||||||
#include "user/lib/Logger.h"
|
#include "user/lib/Logger.h"
|
||||||
#include "user/lib/mem/UniquePointer.h"
|
#include "user/lib/mem/UniquePointer.h"
|
||||||
#include "user/lib/Vector.h"
|
#include "user/lib/Vector.h"
|
||||||
@ -40,13 +39,9 @@ private:
|
|||||||
// bevor er initialisiert wurde
|
// bevor er initialisiert wurde
|
||||||
unsigned int idle_tid = 0U;
|
unsigned int idle_tid = 0U;
|
||||||
|
|
||||||
// NOTE: I would have to release the lock when switching threads but I don't know exactly how to do this
|
// Roughly the old dispatcher functionality
|
||||||
// in the assembly function
|
void start(bse::Vector<bse::unique_ptr<Thread>>::Iterator next); // Start next without prev
|
||||||
// SpinLock lock; // Use spinlock instead of cpu.disable_int() because it still allows preemption
|
void switch_to(Thread* prev_raw, bse::Vector<bse::unique_ptr<Thread>>::Iterator next); // Switch from prev to next
|
||||||
// // for threads that don't use the scheduler
|
|
||||||
|
|
||||||
void start(bse::Vector<bse::unique_ptr<Thread>>::Iterator next); // Switches from prev to current active
|
|
||||||
void switch_to(Thread* prev_raw, bse::Vector<bse::unique_ptr<Thread>>::Iterator next); // Switches from prev to current active
|
|
||||||
|
|
||||||
// Kann nur vom Idle-Thread aufgerufen werden (erster Thread der vom Scheduler gestartet wird)
|
// Kann nur vom Idle-Thread aufgerufen werden (erster Thread der vom Scheduler gestartet wird)
|
||||||
void enable_preemption(unsigned int tid) { idle_tid = tid; }
|
void enable_preemption(unsigned int tid) { idle_tid = tid; }
|
||||||
|
|||||||
@ -6,7 +6,7 @@ void KeyEventListener::trigger(char c) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char KeyEventListener::waitForKeyEvent() const {
|
char KeyEventListener::waitForKeyEvent() const {
|
||||||
Logger::instance() << DEBUG << "KEvLis:: Thread with id: " << tid << " waiting for key event" << endl;
|
logger << DEBUG << "KEvLis:: Thread with id: " << tid << " waiting for key event" << endl;
|
||||||
scheduler.block();
|
scheduler.block();
|
||||||
return this->lastChar; // This is only executed after thread is woken up by manager
|
return this->lastChar; // This is only executed after thread is woken up by manager
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user