Struct x86_64::structures::idt::Entry

source ·
#[repr(C)]
pub struct Entry<F> { /* private fields */ }
Expand description

An Interrupt Descriptor Table entry.

The generic parameter can either be HandlerFunc or HandlerFuncWithErrCode, depending on the interrupt vector.

Implementations§

source§

impl<F> Entry<F>

source

pub const fn missing() -> Self

Creates a non-present IDT entry (but sets the must-be-one bits).

source

pub unsafe fn set_handler_addr(&mut self, addr: VirtAddr) -> &mut EntryOptions

Set the handler address for the IDT entry and sets the present bit.

For the code selector field, this function uses the code segment selector currently active in the CPU.

The function returns a mutable reference to the entry’s options that allows further customization.

Safety

The caller must ensure that addr is the address of a valid interrupt handler function, and the signature of such a function is correct for the entry type.

source

pub fn handler_addr(&self) -> VirtAddr

Returns the virtual address of this IDT entry’s handler function.

source§

impl Entry<HandlerFunc>

source

pub fn set_handler_fn(&mut self, handler: HandlerFunc) -> &mut EntryOptions

Set the handler function for the IDT entry and sets the present bit.

For the code selector field, this function uses the code segment selector currently active in the CPU.

The function returns a mutable reference to the entry’s options that allows further customization.

This method is only usable with the abi_x86_interrupt feature enabled. Without it, the unsafe Entry::set_handler_addr method has to be used instead.

source§

impl Entry<HandlerFuncWithErrCode>

source

pub fn set_handler_fn( &mut self, handler: HandlerFuncWithErrCode ) -> &mut EntryOptions

Set the handler function for the IDT entry and sets the present bit.

For the code selector field, this function uses the code segment selector currently active in the CPU.

The function returns a mutable reference to the entry’s options that allows further customization.

This method is only usable with the abi_x86_interrupt feature enabled. Without it, the unsafe Entry::set_handler_addr method has to be used instead.

source§

impl Entry<PageFaultHandlerFunc>

source

pub fn set_handler_fn( &mut self, handler: PageFaultHandlerFunc ) -> &mut EntryOptions

Set the handler function for the IDT entry and sets the present bit.

For the code selector field, this function uses the code segment selector currently active in the CPU.

The function returns a mutable reference to the entry’s options that allows further customization.

This method is only usable with the abi_x86_interrupt feature enabled. Without it, the unsafe Entry::set_handler_addr method has to be used instead.

source§

impl Entry<DivergingHandlerFunc>

source

pub fn set_handler_fn( &mut self, handler: DivergingHandlerFunc ) -> &mut EntryOptions

Set the handler function for the IDT entry and sets the present bit.

For the code selector field, this function uses the code segment selector currently active in the CPU.

The function returns a mutable reference to the entry’s options that allows further customization.

This method is only usable with the abi_x86_interrupt feature enabled. Without it, the unsafe Entry::set_handler_addr method has to be used instead.

source§

impl Entry<DivergingHandlerFuncWithErrCode>

source

pub fn set_handler_fn( &mut self, handler: DivergingHandlerFuncWithErrCode ) -> &mut EntryOptions

Set the handler function for the IDT entry and sets the present bit.

For the code selector field, this function uses the code segment selector currently active in the CPU.

The function returns a mutable reference to the entry’s options that allows further customization.

This method is only usable with the abi_x86_interrupt feature enabled. Without it, the unsafe Entry::set_handler_addr method has to be used instead.

Trait Implementations§

source§

impl<F: Clone> Clone for Entry<F>

source§

fn clone(&self) -> Entry<F>

Returns a copy of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T> Debug for Entry<T>

source§

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

Formats the value using the given formatter. Read more
source§

impl<T> PartialEq for Entry<T>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<F: Copy> Copy for Entry<F>

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for Entry<F>
where F: RefUnwindSafe,

§

impl<F> Send for Entry<F>
where F: Send,

§

impl<F> Sync for Entry<F>
where F: Sync,

§

impl<F> Unpin for Entry<F>
where F: Unpin,

§

impl<F> UnwindSafe for Entry<F>
where F: UnwindSafe,

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.