Struct locked_idt::LockedIdt

source ·
pub struct LockedIdt { /* private fields */ }
Expand description

A thread-safe and interrupt-safe wrapper around [InterruptDescriptorTable].

This type offers interior mutability, allowing interrupt handlers to be added/changed/removed, but preserves safety by guaranteeing that only a static object can be loaded.

Implementations§

source§

impl LockedIdt

source

pub const fn new() -> LockedIdt

Creates a new IDT filled with non-present entries.

source

pub fn load(&'static self)

Obtains the lock on the inner IDT and loads it into the current CPU using the lidt command.

source

pub fn lock(&self) -> IrqSafeMutexGuard<'_, InterruptDescriptorTable>

Obtains the lock on the inner IDT and returns a guard that derefs into it.

Interrupts are also disabled until the guard falls out of scope, at which point they are re-enabled iff they were previously enabled when this function was invoked. and the lock will be dropped when the guard falls out of scope.

Trait Implementations§

source§

impl Debug for LockedIdt

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.