"Interrupt Descriptor Table (IDT)
More...
|
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...
|
|
◆ DPL
Descriptor Privilege Level.
Enumerator |
---|
DPL_KERNEL | Ring 0 / Kernel mode.
|
DPL_USER | Ring 3 / User mode.
|
◆ Gate
◆ GateSize
◆ 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 |
|
) |
| |
Configure entry point for interrupt handling.
The provided entry function ("handler") is required to, as first step, save the registers.
- Parameters
-
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 |