pub struct Clock<Reference = MonotonicTimeline, Output = SyntheticTimeline>(/* private fields */);Expand description
An object representing a kernel clock, used to track the progress of time. A clock is a one-dimensional affine transformation of the clock monotonic reference timeline which may be atomically adjusted by a maintainer and observed by clients.
As essentially a subtype of NullableHandle, it can be freely interconverted.
Implementations§
Source§impl<Output> Clock<MonotonicTimeline, Output>where
Output: Timeline,
impl<Output> Clock<MonotonicTimeline, Output>where
Output: Timeline,
Sourcepub fn create(
opts: ClockOpts,
backstop: Option<Instant<Output>>,
) -> Result<Clock<MonotonicTimeline, Output>, Status>
pub fn create( opts: ClockOpts, backstop: Option<Instant<Output>>, ) -> Result<Clock<MonotonicTimeline, Output>, Status>
Create a new clock object with the provided arguments, with the monotonic clock as the reference timeline. Wraps the zx_clock_create syscall.
Source§impl<Output> Clock<BootTimeline, Output>where
Output: Timeline,
impl<Output> Clock<BootTimeline, Output>where
Output: Timeline,
Sourcepub fn create(
opts: ClockOpts,
backstop: Option<Instant<Output>>,
) -> Result<Clock<BootTimeline, Output>, Status>
pub fn create( opts: ClockOpts, backstop: Option<Instant<Output>>, ) -> Result<Clock<BootTimeline, Output>, Status>
Create a new clock object with the provided arguments, with the boot clock as the reference timeline. Wraps the zx_clock_create syscall.
Source§impl<Reference, Output> Clock<Reference, Output>
impl<Reference, Output> Clock<Reference, Output>
Sourcepub fn read(&self) -> Result<Instant<Output>, Status>
pub fn read(&self) -> Result<Instant<Output>, Status>
Perform a basic read of this clock. Wraps the zx_clock_read syscall. Requires
ZX_RIGHT_READ and that the clock has had an initial time established.
Sourcepub unsafe fn read_mapped(clock_addr: usize) -> Result<Instant<Output>, Status>
pub unsafe fn read_mapped(clock_addr: usize) -> Result<Instant<Output>, Status>
Perform a basic read of a mapped clock. Wraps the [zx_clock_read_mapped] syscall.
§Safety
|zx_clock_get_details_mapped| must only be called using a |clock_addr| which is the address of a clock’s state currently mapped into the caller’s address space using |zx_vmar_map_clock|. Attempting to get_details from any other address, or from a clock mapping which has been unmapped (completely or partially) will result in undefined behavior.
Sourcepub fn get_details(&self) -> Result<ClockDetails<Reference, Output>, Status>
pub fn get_details(&self) -> Result<ClockDetails<Reference, Output>, Status>
Get low level details of this clock’s current status. Wraps the
zx_clock_get_details syscall. Requires ZX_RIGHT_READ.
Sourcepub unsafe fn get_details_mapped(
clock_addr: usize,
) -> Result<ClockDetails<Reference, Output>, Status>
pub unsafe fn get_details_mapped( clock_addr: usize, ) -> Result<ClockDetails<Reference, Output>, Status>
Get low level details of a mapped clock’s current status. Wraps the zx_clock_get_details_mapped syscall.
§Safety
|zx_clock_get_details_mapped| must only be called using a |clock_addr| which is the address of a clock’s state currently mapped into the caller’s address space using |zx_vmar_map_clock|. Attempting to get_details from any other address, or from a clock mapping which has been unmapped (completely or partially) will result in undefined behavior.
pub fn get_mapped_size( clock: &Clock<Reference, Output>, ) -> Result<usize, Status>
Sourcepub fn update(
&self,
update: impl Into<ClockUpdate<Reference, Output>>,
) -> Result<(), Status>
pub fn update( &self, update: impl Into<ClockUpdate<Reference, Output>>, ) -> Result<(), Status>
Make adjustments to this clock. Wraps the zx_clock_update syscall. Requires
ZX_RIGHT_WRITE.
Sourcepub fn downcast<NewReference>(self) -> Clock<NewReference>where
NewReference: Timeline,
pub fn downcast<NewReference>(self) -> Clock<NewReference>where
NewReference: Timeline,
Convert this clock to one on a generic synthetic timeline, erasing any user-defined timeline.
Sourcepub fn into_raw(self) -> u32
pub fn into_raw(self) -> u32
Return the raw handle’s integer value without closing it when self is dropped.
Sourcepub fn duplicate(
&self,
rights: Rights,
) -> Result<Clock<Reference, Output>, Status>
pub fn duplicate( &self, rights: Rights, ) -> Result<Clock<Reference, Output>, Status>
Wraps the
zx_handle_duplicate
syscall.
Sourcepub fn replace(self, rights: Rights) -> Result<Clock<Reference, Output>, Status>
pub fn replace(self, rights: Rights) -> Result<Clock<Reference, Output>, Status>
Wraps the
zx_handle_replace
syscall.
Sourcepub fn signal(
&self,
clear_mask: Signals,
set_mask: Signals,
) -> Result<(), Status>
pub fn signal( &self, clear_mask: Signals, set_mask: Signals, ) -> Result<(), Status>
Wraps the
zx_object_signal
syscall.
Sourcepub fn wait_one(
&self,
signals: Signals,
deadline: Instant<MonotonicTimeline>,
) -> WaitResult
pub fn wait_one( &self, signals: Signals, deadline: Instant<MonotonicTimeline>, ) -> WaitResult
Wraps the
zx_object_wait_one
syscall.
Trait Implementations§
Source§impl<Reference, Output> AsHandleRef for Clock<Reference, Output>
impl<Reference, Output> AsHandleRef for Clock<Reference, Output>
Source§fn as_handle_ref(&self) -> Unowned<'_, NullableHandle>
fn as_handle_ref(&self) -> Unowned<'_, NullableHandle>
object_wait_many.