Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultät Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
    - Videos
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Module
    - Mailingliste
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * Aufgabe 1
          Dokumentation
       * Aufgabe 2
          Dokumentation
       * Aufgabe 3
          Dokumentation
       * Aufgabe 4
          Dokumentation
       * Aufgabe 5
          Dokumentation
       * Aufgabe 6
          Dokumentation
       * Aufgabe 7
          Dokumentation
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2011/12  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 5

machine/toc.h-Dateireferenz

Enthält die Struktur struct 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)(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.

void toc_settle ( struct toc regs,
void *  tos,
void(*)(Coroutine *)  kickoff,
Coroutine 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 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.

  Impressum   Datenschutz Stand: 2012-01-17 09:23   BO, DL