1
Files
lecture-operating-system-de…/c_os/kernel/threads/ThreadState.h
2022-06-27 22:50:11 +02:00

40 lines
2.2 KiB
C
Executable File

/*****************************************************************************
* *
* 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;
};
#endif