Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

Übungen zu BS - Dokumentation Aufgabe 4 (WS 2015/16)

toc.h-Dateireferenz

Enthält die Struktur toc. Mehr ...

Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

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)(Thread *), Thread *object)
 Diese Funktion bereitet ein struct toc für die erste Aktivierung vor. Mehr ...
 
void toc_go (struct toc *regs)
 Diese Funktion lädt die Prozessorregister mit den Inhalten aus regs. Mehr ...
 
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 zu werden. Mehr ...
 

Ausführliche Beschreibung

Enthält die Struktur toc.

Dokumentation der Funktionen

void toc_go ( struct toc regs)

Diese Funktion lädt die Prozessorregister mit den Inhalten aus regs.

toc_go wird verwendet, um auf jeder CPU den ersten Thread ü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
regsInitialer Kontext der Koroutine, die gestartet werden soll.
void toc_settle ( struct toc regs,
void *  tos,
void(*)(Thread *)  kickoff,
Thread object 
)

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 muss.

toc_settle kann in C++ in der Datei toc.cc implementiert werden und deshalb muss sie nicht als extern "C" deklariert werden.

Parameter
regsKontext, der auf eine Aktivierung vorbereitet werden soll
tosZeiger auf die oberste Adresse des Stackbereichs.
kickoffAdresse der Funktion kickoff, mit der die Ausführung eines Fadens beginnt.
objectZeiger auf ein Thread 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 zu 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_nowZeiger auf ein struct toc, in den der aktuelle Prozessorkontext gesichert werden soll.
reg_thenZeiger auf ein struct toc, der den zu ladenden Kontext enthält.