Module Mtime_clock

Contents

Instructions: Use this module in your project

In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:

  1. Add the following to your project's dependencies/CMakeLists.txt:

    Copy
    DkSDKProject_DeclareAvailable(mtime
        CONSTRAINT "= 2.0.0+dune"
        FINDLIBS mtime mtime.clock mtime.clock.os mtime.top)
    DkSDKProject_MakeAvailable(mtime)
  2. Add the Findlib::mtime library to any desired targets in src/*/CMakeLists.txt:

    Copy
    target_link_libraries(YourPackage_YourLibraryName
         # ... existing libraries, if any ...
         Findlib::mtime)
  3. Click your IDE's Build button

Not using DkSDK?

FIRST, do one or all of the following:

  1. Run:

    Copy
    opam install mtime.2.0.0+dune
  2. Edit your dune-project and add:

    Copy
    (package
      (name YourExistingPackage)
      (depends
      ; ... existing dependenices ...
      (mtime (>= 2.0.0+dune))))

    Then run:

    Copy
    dune build *.opam # if this fails, run: dune build
  3. Edit your <package>.opam file and add:

    Copy
    depends: [
      # ... existing dependencies ...
      "mtime" {>= "2.0.0+dune"}
    ]

    Then run:

    Copy
    opam install . --deps-only

FINALLY, add the mtime.clock.os library to any desired (library)and/or (executable) targets in your **/dune files:

Copy
(library
  (name YourLibrary)
  ; ... existing library options ...
  (libraries
    ; ... existing libraries ...
    mtime.clock.os))

(executable
  (name YourExecutable)
  ; ... existing executable options ...
  (libraries
    ; ... existing libraries ...
    mtime.clock.os))

Monotonic clock

valelapsed : ``unit-> Mtime.span

elapsed () is the monotonic time span elapsed since the beginning of the program.

Raises Sys_error, see error handling

valnow : ``unit-> Mtime.t

now () is the current system-relative monotonic timestamp. Its absolute value is meaningless.

Raises Sys_error, see error handling

valperiod : ``unit-> Mtime.span option

period () is the clock's period as a monotonic time span (if available).

Time counters

type counter

The type for monotonic wall-clock time counters.

valcounter : ``unit-> counter

counter () is a counter counting from now on.

Raises Sys_error, see error handling

valcount :counter -> Mtime.span

count c is the monotonic time span elapsed since c was created.

Monotonic clock raw interface

valelapsed_ns : ``unit-> int64

elapsed_ns () is the unsigned 64-bit integer nanosecond monotonic time span elapsed since the beginning of the program.

Raises Sys_error, see error handling

valnow_ns : ``unit-> int64

now_ns () is an unsigned 64-bit integer nanosecond system-relative monotonic timestamp. The absolute value is meaningless.

Raises Sys_error, see error handling

valperiod_ns : ``unit-> ``int64 option

period_ns () is the clock's period as an unsigned 64-bit integer nanosecond monotonic time span (if available).

Error handling

The functions elapsed, now, counter, elapsed_ns and now_ns raise Sys_error whenever they can't determine the current time or that it doesn't fit in Mtime's range. Usually this exception should only be catched at the toplevel of your program to log it and abort the program. It indicates a serious error condition in the system.

All the other functions, whose functionality is less essential, simply silently return None if they can't determine the information either because it is unavailable or because an error occured.

Platform support