Skip to main content

El2VirtualTimer

Struct El2VirtualTimer 

Source
pub struct El2VirtualTimer(/* private fields */);
Expand description

Represents our Virtual Timer when we are running at EL1.

This works exactly like El1VirtualTimer, but it gives you extra methods for functionality that only processors running at EL2 can access.

This type is not [Send] because it is a per-core type and should not be moved across cores on an SMP system.

Implementations§

Source§

impl El2VirtualTimer

Source

pub unsafe fn new() -> El2VirtualTimer

Create an EL2 Virtual Timer handle

§Safety

Only create one Virtual Timer handle (at any EL) at any given time, as they access shared mutable state within the processor and do read-modify-writes on that state.

Source

pub fn frequency_hz_set(&mut self, new_frequency_hz: u32)

Set frequency

Sets the frequency, in Hz, that the counters are incrementing at. You might need to call this if your system doesn’t initialise the frequency value to something appropriate, or if you change the clock speed of the timer.

Trait Implementations§

Source§

impl GenericTimer for El2VirtualTimer

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§

§

impl !Send for El2VirtualTimer

§

impl !Sync for El2VirtualTimer

§

impl Freeze for El2VirtualTimer

§

impl RefUnwindSafe for El2VirtualTimer

§

impl Unpin for El2VirtualTimer

§

impl UnsafeUnpin for El2VirtualTimer

§

impl UnwindSafe for El2VirtualTimer

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.