machine/toc.h-Dateireferenz
Enthält die Struktur struct
toc.
Mehr ...
|
Klassen |
struct | toc |
| Die Struktur toc dient dazu, bei einem Koroutinenwechsel die Werte der nicht-flĂźchtigen Register zu sichern. Mehr ...
|
Funktionen |
void | toc_settle (struct toc *regs, void *tos, void(*kickoff)(Coroutine *), Coroutine *object) |
| Diese Funktion bereitet ein struct toc fĂźr die erste Aktivierung vor.
|
void | toc_go (struct toc *regs) |
| Diese Funktion lädt die Prozessorregister mit den Inhalten der Struktur regs.
|
void | toc_switch (struct toc *regs_now, struct toc *reg_then) |
| Diese Funktion fĂźhrt einen Kontextwechsel durch. Dazu brauchen nur die aktuellen Registerwerte in regs_now gesichert und durch die Werte von regs_then ersetzt werden.
|
AusfĂźhrliche Beschreibung
Enthält die Struktur struct
toc.
Dokumentation der Funktionen
void toc_go |
( |
struct toc * |
regs |
) |
|
Diese Funktion lädt die Prozessorregister mit den Inhalten der Struktur regs.
toc_go wird verwendet, um auf jeder CPU den ersten Prozess Ăźberhaupt zu starten. Die Implementierung von toc_go muss in Assembler in der Datei toc.asm erfolgen. Sie muss als extern "C" deklariert werden, da sie als Assemblerfunktion nicht dem C++ Namemangeling unterliegt.
- Parameter:
-
| regs | Initialer Kontext der Koroutine, die gestartet werden soll. |
Diese Funktion bereitet ein struct toc fĂźr die erste Aktivierung vor.
Dazu mĂźssen Registerinhalte und Stack so initialisiert werden, dass bei der ersten Aktivierung die AusfĂźhrung mit der Funktion kickoff beginnt, die wiederum den Zeiger object als ersten Parameter auf dem Stack vorfinden muĂ.
toc_settle kann in C++ in der Datei toc.cc implementiert werden und deshalb muss sie nicht als extern "C" deklariert werden.
- Parameter:
-
| regs | Kontext, der auf eine Aktivierung vorbereitet werden soll |
| tos | Zeiger auf die oberste Adresse des Stackbereichs. |
| kickoff | Adresse der Funktion kickoff, mit der die AusfĂźhrung eines Fadens beginnt. |
| object | Zeiger auf ein Coroutine Objekt; Parameter fĂźr die Funktion kickoff. |
void toc_switch |
( |
struct toc * |
regs_now, |
|
|
struct toc * |
reg_then | |
|
) |
| | |
Diese Funktion fĂźhrt einen Kontextwechsel durch. Dazu brauchen nur die aktuellen Registerwerte in regs_now gesichert und durch die Werte von regs_then ersetzt werden.
Auch toc_switch wird in Assembler in der Datei toc.asm implementiert. Sie muss als extern "C" deklariert werden, da sie als Assemblerfunktion nicht dem C++ Namemangeling unterliegt.
- Parameter:
-
| regs_now | Zeiger auf ein struct toc, in das der aktuelle Prozessorkontext gesichert werden soll. |
| reg_then | Zeiger auf ein struct toc, das den zu ladenden Kontext enthält. |