Module Mtime

Monotonic time values.

Mtime has platform independent support for monotonic wall-clock time. This time increases monotonically and is not subject to operating system calendar time adjustments.

Time spans represent non-negative monotonic time spans between two monotonic clock readings. Timestamps represent system-relative monotonic timestamps, their absolute value is meaningless but they can be compared across the processes of an operating system run.

Mtime_clock provides access to a system monotonic clock.

Monotonic time spans

type span

The type for non-negative monotonic time spans. They represent the difference between two monotonic clock readings. If the platform's clock has nanosecond resolution the representation guarantees that the function Mtime_clock.elapsed can measure up to approximatively 584 Julian year spans before silently rolling over (unlikely since this is in a single program run).

module Span : sig ... end

Monotonic time spans.

Monotonic timestamps

Note. Only use timestamps if you need inter-process time correlation, otherwise prefer Mtime_clock.elapsed and counters.

type t

The type for monotonic timestamps relative to an indeterminate system-wide event (e.g. last startup). Their absolute value has no meaning but can be used for inter-process time correlation.

val to_uint64_ns : t -> int64

to_uint64_ns t is t as an unsigned 64-bit integer nanosecond timestamp. The absolute value is meaningless.

val of_uint64_ns : int64 -> t

to_uint64_ns t is t is an unsigned 64-bit integer nanosecond timestamp as a timestamp.

Warning. Timestamps returned by this function should only be used with other timestamp values that are know to come from the same operating system run.

val min_stamp : t

min_stamp is the earliest timestamp.

val max_stamp : t

max_stamp is the latest timestamp.

Predicates

val equal : t -> t -> bool

equal t t' is true iff t and t' are equal.

val compare : t -> t -> int

compare t t' orders timestamps by increasing time.

val is_earlier : t -> than:t -> bool

is_earlier t ~than is true iff t occurred before than.

val is_later : t -> than:t -> bool

is_later t ~than is true iff t occurred after than.

Arithmetic

val span : t -> t -> span

span t t' is the span between t and t' regardless of the order between t and t'.

val add_span : t -> span -> t option

add_span t s is the timestamp s units later than t or None if the result overflows.

val sub_span : t -> span -> t option

sub_span t s is the timestamp s units earlier than t or None if the result underflows.

Formatting

val pp : Stdlib.Format.formatter -> t -> unit

pp formats t as an unsigned 64-bit integer nanosecond timestamp. Note that the absolute value is meaningless.

val dump : Stdlib.Format.formatter -> t -> unit

dump ppf t formats an unspecified raw representation of t on ppf.