remove old thread code (state, inc...)
This commit is contained in:
@ -28,7 +28,6 @@
|
|||||||
#ifndef __Thread_include__
|
#ifndef __Thread_include__
|
||||||
#define __Thread_include__
|
#define __Thread_include__
|
||||||
|
|
||||||
#include "kernel/threads/ThreadState.h"
|
|
||||||
#include "user/lib/Logger.h"
|
#include "user/lib/Logger.h"
|
||||||
|
|
||||||
class Thread {
|
class Thread {
|
||||||
@ -55,10 +54,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Thread aktivieren
|
// Thread aktivieren
|
||||||
void start();
|
void start() const;
|
||||||
|
|
||||||
// Umschalten auf Thread 'next'
|
// Umschalten auf Thread 'next'
|
||||||
void switchTo(Thread& next);
|
void switchTo(Thread& next) const;
|
||||||
|
|
||||||
// Ask thread to terminate itself
|
// Ask thread to terminate itself
|
||||||
void suicide() { running = false; }
|
void suicide() { running = false; }
|
||||||
|
@ -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
|
|
@ -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
|
|
@ -16,9 +16,6 @@
|
|||||||
;* Michael Schoettner, HHU, 3.7.2022 *
|
;* Michael Schoettner, HHU, 3.7.2022 *
|
||||||
;******************************************************************************
|
;******************************************************************************
|
||||||
|
|
||||||
; fuer preemptives Umschalten zwischen Threads
|
|
||||||
%include "kernel/threads/Thread.inc"
|
|
||||||
|
|
||||||
|
|
||||||
; Multiboot-Konstanten
|
; Multiboot-Konstanten
|
||||||
MULTIBOOT_PAGE_ALIGN equ 1<<0
|
MULTIBOOT_PAGE_ALIGN equ 1<<0
|
||||||
|
Reference in New Issue
Block a user