#[repr(C, align(16))]pub struct Idt { /* private fields */ }
Implementations§
Source§impl Idt
impl Idt
pub const NUM_VECTORS: usize = 256usize
Sourcepub const DIVIDE_BY_ZERO: usize = 0usize
pub const DIVIDE_BY_ZERO: usize = 0usize
Divide-by-zero interrupt (#D0)
pub const DEBUG: usize = 1usize
pub const BREAKPOINT: usize = 3usize
pub const OVERFLOW: usize = 4usize
pub const BOUND_RANGE_EXCEEDED: usize = 5usize
pub const INVALID_OPCODE: usize = 6usize
Sourcepub const DEVICE_NOT_AVAILABLE: usize = 7usize
pub const DEVICE_NOT_AVAILABLE: usize = 7usize
A device not available exception
pub const DOUBLE_FAULT: usize = 8usize
Sourcepub const COPROCESSOR_SEGMENT_OVERRUN: usize = 9usize
pub const COPROCESSOR_SEGMENT_OVERRUN: usize = 9usize
On modern CPUs, this interrupt is reserved; this error fires a general protection fault instead.
pub const INVALID_TSS: usize = 10usize
pub const SEGMENT_NOT_PRESENT: usize = 11usize
pub const STACK_SEGMENT_FAULT: usize = 12usize
pub const GENERAL_PROTECTION_FAULT: usize = 13usize
pub const PAGE_FAULT: usize = 14usize
pub const X87_FPU_EXCEPTION: usize = 16usize
pub const ALIGNMENT_CHECK: usize = 17usize
pub const MACHINE_CHECK: usize = 18usize
pub const SIMD_FLOATING_POINT: usize = 19usize
pub const VIRTUALIZATION_EXCEPTION: usize = 20usize
pub const SECURITY_EXCEPTION: usize = 30usize
Sourcepub const DOUBLE_FAULT_IST_OFFSET: usize = 4usize
pub const DOUBLE_FAULT_IST_OFFSET: usize = 4usize
Chosen by fair die roll, guaranteed to be random.
pub const MAX_CPU_EXCEPTION: usize = 30usize
Sourcepub const LOCAL_APIC_TIMER: usize = 254usize
pub const LOCAL_APIC_TIMER: usize = 254usize
Local APIC timer interrupt vector mapped by
Controller::enable_hardware_interrupts
.
Systems which do not use that function to initialize the local APIC may map this interrupt to a different IDT vector.
Sourcepub const LOCAL_APIC_SPURIOUS: usize = 255usize
pub const LOCAL_APIC_SPURIOUS: usize = 255usize
Local APIC spurious interrupt vector mapped by
Controller::enable_hardware_interrupts
.
Systems which do not use that function to initialize the local APIC may map this interrupt to a different IDT vector.
Sourcepub const PIC_BIG_START: usize = 32usize
pub const PIC_BIG_START: usize = 32usize
Base of the primary PIC’s interrupt vector region mapped by
Controller::enable_hardware_interrupts
.
Systems which do not use that function to initialize the PICs may map this interrupt to a different IDT vector.
Sourcepub const PIC_LITTLE_START: usize = 40usize
pub const PIC_LITTLE_START: usize = 40usize
Base of the secondary PIC’s interrupt vector region mapped by
Controller::enable_hardware_interrupts
.
Systems which do not use that function to initialize the PICs may map this interrupt to a different IDT vector.
pub const fn new() -> Idt
Sourcepub fn register_isa_isr(&mut self, irq: IsaInterrupt, isr: *const ())
pub fn register_isa_isr(&mut self, irq: IsaInterrupt, isr: *const ())
Register an interrupt service routine (ISR) for the given ISA standard PC interrupt.
pub fn register_isr(&mut self, vector: usize, isr: *const ())
pub fn load(&'static self)
Trait Implementations§
Source§impl Control for Idt
impl Control for Idt
type Registers = Registers
Source§fn is_enabled(&self) -> bool
fn is_enabled(&self) -> bool
true
if interrupts are enabled.fn register_handlers<H>(&mut self) -> Result<(), RegistrationError>
Source§fn enter_critical(&mut self) -> CriticalGuard<'_, Self>
fn enter_critical(&mut self) -> CriticalGuard<'_, Self>
Auto Trait Implementations§
impl Freeze for Idt
impl RefUnwindSafe for Idt
impl Send for Idt
impl Sync for Idt
impl Unpin for Idt
impl UnwindSafe for Idt
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.