-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | High-resolution clock functions: monotonic, realtime, cputime.
--
-- A package for convenient access to high-resolution clock and timer
-- functions of different operating systems.
--
-- POSIX layer was developed by Cetin Sert in 2009.
--
-- Windows layer was contributed by Eugene Kirpichov in 2010.
--
-- Both layers share the same surface API.
--
--
-- - Version Scheme Major-R-ewrite .
-- New-F-unctionality .
-- I-mprovementAndBugFixes .
-- P-ackagingOnly
--
--
--
-- - PackagingOnly changes are made for quality assurance
-- reasons.
--
@package clock
@version 0.3
-- | High-resolution, realtime clock and timer functions for Posix systems.
-- This module is being developed according to IEEE Std 1003.1-2008:
-- http://www.opengroup.org/onlinepubs/9699919799/,
-- http://www.opengroup.org/onlinepubs/9699919799/functions/clock_getres.html#
module System.Clock
-- | Clock types. A clock may be system-wide (that is, visible to all
-- processes) or per-process (measuring time that is meaningful only
-- within a process). All implementations shall support CLOCK_REALTIME.
data Clock
-- | The identifier for the system-wide monotonic clock, which is defined
-- as a clock measuring real time, whose value cannot be set via
-- clock_settime and which cannot have negative clock jumps. The maximum
-- possible clock jump shall be implementation-defined. For this clock,
-- the value returned by getTime represents the amount of time (in
-- seconds and nanoseconds) since an unspecified point in the past (for
-- example, system start-up time, or the Epoch). This point does not
-- change after system start-up time. Note that the absolute value of the
-- monotonic clock is meaningless (because its origin is arbitrary), and
-- thus there is no need to set it. Furthermore, realtime applications
-- can rely on the fact that the value of this clock is never set.
Monotonic :: Clock
-- | The identifier of the system-wide clock measuring real time. For this
-- clock, the value returned by getTime represents the amount of time (in
-- seconds and nanoseconds) since the Epoch.
Realtime :: Clock
-- | The identifier of the CPU-time clock associated with the calling
-- process. For this clock, the value returned by getTime represents the
-- amount of execution time of the current process.
ProcessCPUTime :: Clock
-- | The identifier of the CPU-time clock associated with the calling OS
-- thread. For this clock, the value returned by getTime represents the
-- amount of execution time of the current OS thread.
ThreadCPUTime :: Clock
-- | TimeSpec structure
data TimeSpec
TimeSpec :: {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> TimeSpec
-- | The getTime function shall return the current value for the
-- specified clock.
getTime :: Clock -> IO TimeSpec
-- | The getRes function shall return the resolution of any clock.
-- Clock resolutions are implementation-defined and cannot be set by a
-- process.
getRes :: Clock -> IO TimeSpec
-- | Gets seconds of a timespec value.
sec :: TimeSpec -> Int
-- | Gets nanoseconds of a timespec value.
nsec :: TimeSpec -> Int
instance Show TimeSpec
instance Read TimeSpec
instance Eq TimeSpec
instance Ord TimeSpec
instance Storable TimeSpec