"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 |