StuBS
|
"Interrupt Descriptor Table (IDT) More...
Enumerations | |
enum | Gate { GATE_TASK = 0x5 , GATE_INT = 0x6 , GATE_TRAP = 0x7 } |
Gate types. More... | |
enum | GateSize { GATE_SIZE_16 = 0 , GATE_SIZE_32 = 1 } |
Segment type. More... | |
enum | DPL { DPL_KERNEL = 0 , DPL_USER = 3 } |
Descriptor Privilege Level. More... | |
Functions | |
void | load () |
Load the IDT's address and size into the IDT-Register via idtr . | |
void | 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) |
Configure entry point for interrupt handling. More... | |
"Interrupt Descriptor Table (IDT)
enum IDT::DPL |
enum IDT::Gate |
enum IDT::GateSize |
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 |
||
) |
Configure entry point for interrupt handling.
The provided entry function ("handler") is required to, as first step, save the registers.
vector | Interrupt vector number for which the handler is to be set/changed |
handler | Low-level entry point for interrupt handling |
type | Gate type (Interrupt, Trap, or Task) |
size | 16- or 32-bit |
dpl | Permissions required for enter this interrupt handler (kernel- or user space) |
present | Denotes whether the IDT descriptor is marked as available |