pub struct El2HypPhysicalTimer { /* private fields */ }Expand description
Represents our Hypervisor-specific Physical Timer.
This is designed for use by a hypervisor, whilst an EL1 application concurrently uses the Physical Timer and/or the Virtual Timer.
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 El2HypPhysicalTimer
impl El2HypPhysicalTimer
Sourcepub unsafe fn new() -> El2HypPhysicalTimer
pub unsafe fn new() -> El2HypPhysicalTimer
Create a Timer handle for the EL2-specific Hyp Physical Timer.
§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. This timer is distinct from the Physical Timer and the Virtual Timer, and so can exist concurrently.
Trait Implementations§
Source§impl GenericTimer for El2HypPhysicalTimer
impl GenericTimer for El2HypPhysicalTimer
Source§fn frequency_hz(&self) -> u32
fn frequency_hz(&self) -> u32
Get the timer frequency
Source§fn counter_compare(&self) -> u64
fn counter_compare(&self) -> u64
Get the counter compare value.
Source§fn counter_compare_set(&mut self, value: u64)
fn counter_compare_set(&mut self, value: u64)
Set the counter compare value. Read more
Source§fn countdown_set(&mut self, duration_ticks: u32)
fn countdown_set(&mut self, duration_ticks: u32)
Set the value of the count-down timer. Read more
Source§fn interrupt_masked(&self) -> bool
fn interrupt_masked(&self) -> bool
Is this timer’s interrupt masked?
Source§fn interrupt_mask(&mut self, mask: bool)
fn interrupt_mask(&mut self, mask: bool)
Mask (or unmask) this timer’s interrupt.
Source§fn interrupt_status(&self) -> bool
fn interrupt_status(&self) -> bool
Has this timer’s interrupt fired?
Source§fn delay_ticks(&mut self, ticks: u32)
fn delay_ticks(&mut self, ticks: u32)
Wait for some number of clock ticks