"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...
|
| |
◆ IDT::InterruptDescriptor
| struct IDT::InterruptDescriptor |
| Class Members |
|
uint16_t |
address_low |
|
|
uint16_t |
selector |
|
|
union InterruptDescriptor |
__unnamed__ |
|
|
uint64_t |
address_high: 48 |
|
|
uint64_t |
__pad0__: 0 |
|
◆ IDT::InterruptDescriptor.__unnamed__
| union IDT::InterruptDescriptor.__unnamed__ |
◆ IDT::InterruptDescriptor.__unnamed__.__unnamed__
| struct IDT::InterruptDescriptor.__unnamed__.__unnamed__ |
| Class Members |
|
uint8_t |
ist: 3 |
IST Index (64 bit) |
|
uint8_t |
__pad0__: 5 |
unused, has to be 0 |
|
Gate |
type: 3 |
gate type |
|
GateSize |
size: 1 |
gate size |
|
uint8_t |
__pad1__: 1 |
unused, has to be 0 |
|
DPL |
dpl: 2 |
descriptor privilege level |
|
uint8_t |
present: 1 |
present: 1 for interrupts |
◆ Gate
◆ GateSize
◆ DPL
Descriptor Privilege Level.
| Enumerator |
|---|
| DPL_KERNEL | Ring 0 / Kernel mode.
|
| DPL_USER | Ring 3 / User mode.
|
◆ 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 |