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 7

IOREDTBL_L Strukturreferenz

Eintrag in der IO Redirection Table. Mehr ...

#include <ioapic_registers.h>

Aufstellung aller Elemente

Öffentliche Attribute

unsigned int vector:8
 Interrupt Vector, R/W.
unsigned int delivery_mode:3
 Delivery Mode, R/W.
unsigned int destination_mode:1
 Destination Mode, R/W.
unsigned int delivery_status:1
 Delivery Status, RO.
unsigned int polarity:1
 Interrupt Input Pin Polarity, R/W.
unsigned int remote_irr:1
 Remote IRR (for level-triggered interrupts only), RO.
unsigned int trigger_mode:1
 Trigger Mode, R/W.
unsigned int mask:1
 Interrupt Mask, R/W.
unsigned int reserved:15


Ausführliche Beschreibung

Eintrag in der IO Redirection Table.

Jeder Eintrag in der IO Redirection Table symbolisiert eine externe Interruptquelle. Für jeden externen Interrupt lassen sich hier folgende Einstellungen vornehmen:

  • vector gibt an, welcher Vektor in der Interruptvektortabelle für den entsprechenden Interrupt aktiviert werden soll.
  • delivery_mode gibt an, wie die adressierten CPUs (bzw. ihre local APICs) auf das Interruptsignal reagieren sollen. In OO/MPStubs soll DELIVERY_MODE_LOWESTPRI verwendet werden. Da die einzelnen CPUs alle dieselbe Priorität besitzen, werden so die auftretenden Interrupts gleich über alle CPUs verteilt.
  • destination_mode legt fest, wie logical_destination interpretiert werden soll. In OO/MPStubs soll hier DESTINATION_MODE_LOGICAL verwedet werden.
  • polarity gibt an, wann ein Interrupt signalisiert werden soll. OO/MPStubs soll hier POLARITY_HIGH verwenden.
  • trigger_mode gibt an, ob die Interruptsignalisierung pegel- oder flankengesteuert ist. OO/MPStubs verwendet hier TRIGGER_MODE_EDGE für die Tastatur und den Timer.
  • mask gibt an, ob für die entsprechende Quelle Interrupts zugelassen werden sollen oder nicht. 1 maskiert die dem Eintrag entsprechende Interruptquelle aus, 0 lässt den Interrupt zu.
  • logical_destination beschreibt eine Menge von Prozessoren, die potentiell als Empfänger der Interruptnachricht in Frage kommen. OO/MPStubs verwendet hier 0xff. Damit kommen alle CPUs als Empfänger infrage und die Interruptlast wird so gleichmäßig über alle CPUs verteilt. Hinweis: In QEMU funktioniert dies nicht. Dort bekommt immer CPU 0, also der BSP alle Interrupts.

Ein Tabelleneintrag besteht dabei aus zwei 32bit Breiten Wörtern IOREDTBL_H bzw. IOREDTBL_L

Die Redirection Tabelle beginnt bei IOAPIC-Register 0x10 und endet bei 0x3f. Jeder Eintrag umfasst 64 bit, also 2 Register des IOAPICs. IOREDTBL_L ist niederwertige Wort, IOREDTBL_H das höherwertige. Eintrag 0 in der Tabelle wären dann die Register 0x10(entspricht IOREDTBL_L) und 0x11(entspricht IOREDTBL_H).

siehe: IO-APIC manual, p. 11-13


Die Dokumentation für diese Struktur wurde erzeugt aufgrund der Datei:
  Impressum   Datenschutz Stand: 2012-02-01 10:07   BO, DL