Struct r3::kernel::InterruptLine

source ·
pub struct InterruptLine<System>(_, _)
where
         System: KernelInterruptLine;
Expand description

Refers to an interrupt line in a system.

Implementations§

source§

impl<System> InterruptLine<System>where System: KernelInterruptLine,

source

pub const fn from_num(num: usize) -> InterruptLine<System>

Construct a InterruptLine from InterruptNum.

source

pub const fn num(self) -> usize

Get the raw InterruptNum value representing this interrupt line.

source§

impl<System> InterruptLine<System>where System: KernelInterruptLine,

source

pub const fn define() -> InterruptLineDefiner<System>

Construct a InterruptLineDefiner to define an interrupt line in a configuration function.

source

pub fn set_priority( self, value: i16 ) -> Result<(), SetInterruptLinePriorityError>

Set the priority of the interrupt line. The new priority must fall within a managed range.

Turning a managed interrupt handler into an unmanaged one is unsafe because the behavior of system calls is undefined inside an unmanaged interrupt handler. This method checks the new priority to prevent this from happening and returns SetInterruptLinePriorityError::BadParam if the operation is unsafe.

source

pub unsafe fn set_priority_unchecked( self, value: i16 ) -> Result<(), SetInterruptLinePriorityError>

Set the priority of the interrupt line without checking if the new priority falls within a managed range.

Safety

If a non-unmanaged-safe interrupt handler is attached to the interrupt line, changing the priority of the interrupt line to outside of the managed range (thus turning the handler into an unmanaged handler) may allow the interrupt handler to invoke an undefined behavior, for example, by making system calls, which are disallowed in an unmanaged interrupt handler.

source

pub fn enable(self) -> Result<(), EnableInterruptLineError>

Enable the interrupt line.

source

pub fn disable(self) -> Result<(), EnableInterruptLineError>

Disable the interrupt line.

source

pub fn pend(self) -> Result<(), PendInterruptLineError>

Set the pending flag of the interrupt line.

source

pub fn clear(self) -> Result<(), ClearInterruptLineError>

Clear the pending flag of the interrupt line.

source

pub fn is_pending(self) -> Result<bool, QueryInterruptLineError>

Read the pending flag of the interrupt line.

Trait Implementations§

source§

impl<System> Clone for InterruptLine<System>where System: KernelInterruptLine,

source§

fn clone(&self) -> InterruptLine<System>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<System> Debug for InterruptLine<System>where System: KernelInterruptLine,

source§

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

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

impl<System> Hash for InterruptLine<System>where System: KernelInterruptLine,

source§

fn hash<H>(&self, state: &mut H)where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<System> PartialEq<InterruptLine<System>> for InterruptLine<System>where System: KernelInterruptLine,

source§

fn eq(&self, other: &InterruptLine<System>) -> bool

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

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<System> Copy for InterruptLine<System>where System: KernelInterruptLine,

source§

impl<System> Eq for InterruptLine<System>where System: KernelInterruptLine,

Auto Trait Implementations§

§

impl<System> RefUnwindSafe for InterruptLine<System>

§

impl<System> Send for InterruptLine<System>

§

impl<System> Sync for InterruptLine<System>

§

impl<System> Unpin for InterruptLine<System>

§

impl<System> UnwindSafe for InterruptLine<System>

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,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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.
const: unstable · 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.
const: unstable · source§

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

Performs the conversion.