1

add logging to thread and destructor

This commit is contained in:
2022-07-16 16:36:34 +02:00
parent 696292bdff
commit 675f995abd
3 changed files with 13 additions and 5 deletions

View File

@ -20,13 +20,13 @@ private:
public: public:
IdleThread() { IdleThread() {
kout << "Initialized Idle Thread" << endl; log << INFO << "Initialized Idle Thread with ID: " << dec << this->tid << endl;
} }
void run() override { void run() override {
// Idle-Thread läuft, ab jetzt ist der Scheduler fertig initialisiert // Idle-Thread läuft, ab jetzt ist der Scheduler fertig initialisiert
scheduler.enable_preemption(); scheduler.enable_preemption();
kout << "IdleThread enabled preemption" << endl; log << INFO << "IdleThread enabled preemption" << endl;
while (true) { while (true) {
// kout << "Idle!" << endl; // kout << "Idle!" << endl;

View File

@ -30,6 +30,7 @@ extern "C" {
void Thread_switch(struct ThreadState* regs_now, struct ThreadState* reg_then); void Thread_switch(struct ThreadState* regs_now, struct ThreadState* reg_then);
} }
Logger Thread::log = Logger("Thread");
unsigned int ThreadCnt = 0; unsigned int ThreadCnt = 0;
/***************************************************************************** /*****************************************************************************
@ -107,6 +108,7 @@ void kickoff(Thread* object) {
* stack Stack für die neue Koroutine * * stack Stack für die neue Koroutine *
*****************************************************************************/ *****************************************************************************/
Thread::Thread() : stack(new unsigned int[1024]), tid(ThreadCnt++) { Thread::Thread() : stack(new unsigned int[1024]), tid(ThreadCnt++) {
Thread::log << INFO << "Initialized thread with ID: " << this->tid << endl;
Thread_init(&regs, stack + 1024, kickoff, this); // Stack grows from top to bottom Thread_init(&regs, stack + 1024, kickoff, this); // Stack grows from top to bottom
} }

View File

@ -29,20 +29,26 @@
#define __Thread_include__ #define __Thread_include__
#include "kernel/threads/ThreadState.h" #include "kernel/threads/ThreadState.h"
#include "lib/Chain.h" #include "user/lib/Logger.h"
class Thread : public Chain { class Thread {
private: private:
Thread(const Thread& copy) = delete; // Verhindere Kopieren Thread(const Thread& copy) = delete; // Verhindere Kopieren
unsigned int* stack; unsigned int* stack;
struct ThreadState regs; struct ThreadState regs;
protected:
static Logger log;
public: public:
unsigned int tid; // Thread-ID (wird im Konstruktor vergeben) unsigned int tid; // Thread-ID (wird im Konstruktor vergeben)
Thread(); Thread();
~Thread();
virtual ~Thread() {
delete[] this->stack;
}
// Thread aktivieren // Thread aktivieren
void start(); void start();