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 Handle
, it can be freely interconverted.
Implementations§
source§impl<Output: Timeline> Clock<MonotonicTimeline, Output>
impl<Output: Timeline> Clock<MonotonicTimeline, Output>
source§impl<Output: Timeline> Clock<BootTimeline, Output>
impl<Output: Timeline> Clock<BootTimeline, Output>
sourcepub fn create(
opts: ClockOpts,
backstop: Option<Instant<Output>>,
) -> Result<Self, Status>
pub fn create( opts: ClockOpts, backstop: Option<Instant<Output>>, ) -> Result<Self, Status>
Create a new clock object with the provided arguments, with the boot clock as the reference timeline. Wraps the zx_clock_create syscall.
WARNING: this has been added in advance of https://fxrev.dev/1066674, the boot timeline is not yet available in the stable vdso. This currently uses the monotonic clock which is temporarily equivalent to the boot clock until the monotonic clock starts pausing during suspend in the near future. This will be migrated to the boot clock before the monotonic clock begins pausing during suspend.
source§impl<Reference: Timeline, Output: Timeline> Clock<Reference, Output>
impl<Reference: Timeline, Output: Timeline> 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 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 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: Timeline>(
self,
) -> Clock<NewReference, SyntheticTimeline>
pub fn downcast<NewReference: Timeline>( self, ) -> Clock<NewReference, SyntheticTimeline>
Convert this clock to one on a generic synthetic timeline, erasing any user-defined timeline.
Trait Implementations§
source§impl<Reference: Timeline, Output: Timeline> AsHandleRef for Clock<Reference, Output>
impl<Reference: Timeline, Output: Timeline> AsHandleRef for Clock<Reference, Output>
source§fn as_handle_ref(&self) -> HandleRef<'_>
fn as_handle_ref(&self) -> HandleRef<'_>
object_wait_many
.source§fn raw_handle(&self) -> zx_handle_t
fn raw_handle(&self) -> zx_handle_t
source§fn signal_handle(
&self,
clear_mask: Signals,
set_mask: Signals,
) -> Result<(), Status>
fn signal_handle( &self, clear_mask: Signals, set_mask: Signals, ) -> Result<(), Status>
source§fn wait_handle(
&self,
signals: Signals,
deadline: MonotonicInstant,
) -> Result<Signals, Status>
fn wait_handle( &self, signals: Signals, deadline: MonotonicInstant, ) -> Result<Signals, Status>
source§fn wait_async_handle(
&self,
port: &Port,
key: u64,
signals: Signals,
options: WaitAsyncOpts,
) -> Result<(), Status>
fn wait_async_handle( &self, port: &Port, key: u64, signals: Signals, options: WaitAsyncOpts, ) -> Result<(), Status>
source§fn get_name(&self) -> Result<Name, Status>
fn get_name(&self) -> Result<Name, Status>
source§fn set_name(&self, name: &Name) -> Result<(), Status>
fn set_name(&self, name: &Name) -> Result<(), Status>
source§fn basic_info(&self) -> Result<HandleBasicInfo, Status>
fn basic_info(&self) -> Result<HandleBasicInfo, Status>
source§fn count_info(&self) -> Result<HandleCountInfo, Status>
fn count_info(&self) -> Result<HandleCountInfo, Status>
source§impl<Reference: Timeline, Output: Timeline> HandleBased for Clock<Reference, Output>
impl<Reference: Timeline, Output: Timeline> HandleBased for Clock<Reference, Output>
source§fn duplicate_handle(&self, rights: Rights) -> Result<Self, Status>
fn duplicate_handle(&self, rights: Rights) -> Result<Self, Status>
source§fn replace_handle(self, rights: Rights) -> Result<Self, Status>
fn replace_handle(self, rights: Rights) -> Result<Self, Status>
source§fn into_handle(self) -> Handle
fn into_handle(self) -> Handle
source§fn into_raw(self) -> zx_handle_t
fn into_raw(self) -> zx_handle_t
source§fn from_handle(handle: Handle) -> Self
fn from_handle(handle: Handle) -> Self
source§fn into_handle_based<H: HandleBased>(self) -> H
fn into_handle_based<H: HandleBased>(self) -> H
source§fn from_handle_based<H: HandleBased>(h: H) -> Self
fn from_handle_based<H: HandleBased>(h: H) -> Self
fn is_invalid_handle(&self) -> bool
source§impl<Reference: Ord, Output: Ord> Ord for Clock<Reference, Output>
impl<Reference: Ord, Output: Ord> Ord for Clock<Reference, Output>
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl<Reference: PartialEq, Output: PartialEq> PartialEq for Clock<Reference, Output>
impl<Reference: PartialEq, Output: PartialEq> PartialEq for Clock<Reference, Output>
source§impl<Reference: PartialOrd, Output: PartialOrd> PartialOrd for Clock<Reference, Output>
impl<Reference: PartialOrd, Output: PartialOrd> PartialOrd for Clock<Reference, Output>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more