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: