Struct r3::kernel::InterruptLine [−][src]
pub struct InterruptLine<System>(_, _);
Expand description
Refers to an interrupt line in a system.
Implementations
Construct a CfgInterruptLineBuilder
to configure an interrupt line in
a configuration function.
It’s allowed to call this for multiple times for the same interrupt
line. However, each property (such as priority
) cannot be specified
more than once.
Construct a InterruptLine
from InterruptNum
.
Get the raw InterruptNum
value representing this interrupt line.
pub fn set_priority(
self,
value: InterruptPriority
) -> Result<(), SetInterruptLinePriorityError>
pub fn set_priority(
self,
value: InterruptPriority
) -> 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.
pub unsafe fn set_priority_unchecked(
self,
value: InterruptPriority
) -> Result<(), SetInterruptLinePriorityError>
pub unsafe fn set_priority_unchecked(
self,
value: InterruptPriority
) -> 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.
Enable the interrupt line.
Disable the interrupt line.
Set the pending flag of the interrupt line.
Clear the pending flag of the interrupt line.
Read the pending flag of the interrupt line.