diff --git a/c_os/kernel/threads/Thread.h b/c_os/kernel/threads/Thread.h index 0615adc..32589b1 100644 --- a/c_os/kernel/threads/Thread.h +++ b/c_os/kernel/threads/Thread.h @@ -28,7 +28,6 @@ #ifndef __Thread_include__ #define __Thread_include__ -#include "kernel/threads/ThreadState.h" #include "user/lib/Logger.h" class Thread { @@ -55,10 +54,10 @@ public: } // Thread aktivieren - void start(); + void start() const; // Umschalten auf Thread 'next' - void switchTo(Thread& next); + void switchTo(Thread& next) const; // Ask thread to terminate itself void suicide() { running = false; } diff --git a/c_os/kernel/threads/Thread.inc b/c_os/kernel/threads/Thread.inc deleted file mode 100755 index a4891c5..0000000 --- a/c_os/kernel/threads/Thread.inc +++ /dev/null @@ -1,30 +0,0 @@ -;***************************************************************************** -;* * -;* C O R O U T I N E * -;* * -;*---------------------------------------------------------------------------* -;* Beschreibung: Assemblerdarstellung der 'struct CoroutineState' aus * -;* CoroutineState.h * -;* * -;* Die Reihenfolge der Registerbezeichnungen muss unbedingt * -;* mit der von 'struct CoroutineState' uebereinstimmen. * -;* * -;* Autor: Olaf Spinczyk, TU Dortmund * -;***************************************************************************** - -; Nicht-fluechtige Register des Intel 80386 Prozessors - -; Die folgenden Angaben belegen ebx_offset mit dem Wert 0, esi_offset mit 4 -; edi_offset mit 8 usw. Dies entspricht den Abstaenden der Elemente ebx, esi, -; edi usw. der Struktur CoroutineState zum Anfang der Struktur (in Bytes). - -[ABSOLUTE 0] -ebx_offset: resd 1 -esi_offset: resd 1 -edi_offset: resd 1 -ebp_offset: resd 1 -esp_offset: resd 1 -eax_offset: resd 1 -ecx_offset: resd 1 -edx_offset: resd 1 -efl_offset: resd 1 diff --git a/c_os/kernel/threads/ThreadState.h b/c_os/kernel/threads/ThreadState.h deleted file mode 100755 index 110013f..0000000 --- a/c_os/kernel/threads/ThreadState.h +++ /dev/null @@ -1,45 +0,0 @@ -/***************************************************************************** - * * - * C O R O U T I N E S T A T E * - * * - *---------------------------------------------------------------------------* - * Beschreibung: Die Struktur CoroutineState dient dazu, bei einem * - * Koroutinenwechsel die Werte der nicht-fluechtigen * - * Register zu sichern. Beim GNU C Compiler sind eax, ecx * - * und edx fluechtige Register, die bei Funktionsaufrufen * - * und somit auch bei einem Koroutinenwechsel keine spaeter * - * noch benoetigten Werte haben duerfen. Daher muss in der * - * Struktur CoroutineState auch kein Platz fuer sie bereit- * - * gestellt werden. * - * * - * Achtung: Fuer den Zugriff auf die Elemente von * - * struct CoroutineState aus einer Assemblerfunktion * - * heraus werden in der Datei Coroutine.inc Namen fuer die * - * benoetigten Abstaende der einzelnen Elemente zum Anfang * - * der Struktur definiert. Damit dann auch auf die richtigen* - * Elemente zugegriffen wird, sollten sich die Angaben von * - * CoroutineState.h und Coroutine.inc exakt entsprechen. * - * Wer also CoroutineState.h aendert, muss auch * - * Coroutine.inc anpassen (und umgekehrt.) * - * * - * Autor: Olaf Spinczyk, TU Dortmund * - *****************************************************************************/ - -#ifndef __CoroutineState_include__ -#define __CoroutineState_include__ - -struct ThreadState { - void* ebx; - void* esi; - void* edi; - void* ebp; - void* esp; - // nachfolgend die fluechtige Register - // wichtig fuer preemptives Multitasking - void* eax; - void* ecx; - void* edx; - void* efl; -}; - -#endif diff --git a/c_os/startup.asm b/c_os/startup.asm index ca0bd9e..0ac0ca4 100644 --- a/c_os/startup.asm +++ b/c_os/startup.asm @@ -16,9 +16,6 @@ ;* Michael Schoettner, HHU, 3.7.2022 * ;****************************************************************************** -; fuer preemptives Umschalten zwischen Threads -%include "kernel/threads/Thread.inc" - ; Multiboot-Konstanten MULTIBOOT_PAGE_ALIGN equ 1<<0