El0PhysicalTimer

Struct El0PhysicalTimer 

Source
pub struct El0PhysicalTimer();
Expand description

Represents our Generic Timer when we are running at EL0.

Note that for most of these APIs to work, EL0 needs to have been granted access using methods like El1PhysicalTimer::el0_access_physical_counter.

Implementations§

Source§

impl El0PhysicalTimer

Source

pub unsafe fn new() -> El0PhysicalTimer

Create an EL0 Timer handle for the Physical Timer.

EL2/EL1 has to grant permission for EL0 to use the Physical Timer, so check they did that.

§Safety

Only create one of these at any given time, as they access shared mutable state within the processor and do read-modify-writes on that state.

Trait Implementations§

Source§

impl GenericTimer for El0PhysicalTimer

Source§

fn frequency_hz(&self) -> u32

Get the timer frequency
Source§

fn counter(&self) -> u64

Get the current counter value. Read more
Source§

fn counter_compare(&self) -> u64

Get the counter compare value.
Source§

fn counter_compare_set(&mut self, value: u64)

Set the counter compare value. Read more
Source§

fn countdown(&self) -> u32

Get the current value of the countdown timer.
Source§

fn countdown_set(&mut self, duration_ticks: u32)

Set the value of the count-down timer. Read more
Source§

fn enabled(&self) -> bool

This is timer enabled?
Source§

fn enable(&self, enabled: bool)

Enable/disable this timer
Source§

fn interrupt_masked(&self) -> bool

Is this timer’s interrupt masked?
Source§

fn interrupt_mask(&mut self, mask: bool)

Mask (or unmask) this timer’s interrupt.
Source§

fn interrupt_status(&self) -> bool

Has this timer’s interrupt fired?
Source§

fn delay_ticks(&mut self, ticks: u32)

Wait for some number of clock ticks
Source§

fn delay_ms(&mut self, ms: u32)

Delay for some number of milliseconds
Source§

fn delay_us(&mut self, us: u32)

Delay for some number of microseconds

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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 T
where 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 T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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.