 
			
		Eintrag in der IO Redirection Table. Mehr ...
#include <machine/ioapic_registers.h>
| Öffentliche Attribute | |
| unsigned int | reserved:24 | 
| unsigned int | logical_destination:8 | 
| Menge von Zielprozessoren. | |
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:
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_LOGICAL verwendet werden.POLARITY_HIGH verwenden.TRIGGER_MODE_EDGE für die Tastatur und den Timer, die (optionale) serielle Schnittstelle jedoch TRIGGER_MODE_LEVEL1 maskiert die dem Eintrag entsprechende Interruptquelle aus, 0 lässt den Interrupt zu.1, für MPStuBS müssen in der Bitmaske die untersten n Bits auf 1 gesetzt sein, wobei n die Anzahl der im System vorhandenen CPUs ist (siehe APICSystem::getNumberOfCPUs()). 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).