Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik
idt.h-Dateireferenz

Enthält die Interrupt Descriptor Table. Mehr ...

#include "types.h"
Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

Aufzählungen

enum  Gate { GATE_TASK = 0x5, GATE_INT = 0x6, GATE_TRAP = 0x7 }
 
enum  GateSize { GATE_SIZE_16 = 0, GATE_SIZE_32 = 1 }
 
enum  DPL { DPL_KERNEL = 0, DPL_USER = 3 }
 

Funktionen

void IDT::init (uint8_t max=255)
 Initialisiere die IDT mit den Standardeinsprungsfunktion für die Interruptbehandlung. Mehr ...
 
void IDT::handle (uint8_t vector, void *handler, enum Gate type=Gate::GATE_INT, enum GateSize size=GateSize::GATE_SIZE_32, enum DPL dpl=DPL::DPL_KERNEL, bool present=true)
 Einsprungsfunktion für Interruptbehandlung. Mehr ...
 

Ausführliche Beschreibung

Enthält die Interrupt Descriptor Table.

Dokumentation der Funktionen

◆ handle()

void IDT::handle ( uint8_t  vector,
void *  handler,
enum Gate  type = Gate::GATE_INT,
enum GateSize  size = GateSize::GATE_SIZE_32,
enum DPL  dpl = DPL::DPL_KERNEL,
bool  present = true 
)

Einsprungsfunktion für Interruptbehandlung.

Die gewählte Einsprungsfunktion muss zuerst die ganze Sicherung der Register übernehmen.

Parameter
vectorInterruptvektor zu der die Behandlung gesetzt/geändert werden soll
handler(lowlevel) Einsrpungsfunktion für die Behandlung
typeGatetyp (Interrupt, Trap oder Task)
size16- oder 32-bit
dplBerechtigung für die Interruptauslösung (Kernel oder Userspace)
presentIst die Behandlung Verfügbar?

◆ init()

void IDT::init ( uint8_t  max = 255)

Initialisiere die IDT mit den Standardeinsprungsfunktion für die Interruptbehandlung.

Es werden die 'irq_handler_VECTOR'-Behandlungsroutinen aus der 'interrupt.asm' in die Interrupt Description Table eingetragen, welche den Kontext sichern und zu guardian() springen.

Parameter
maxHöchster Interruptvektor (inklusive)