System.Clock

clock-0.7.2: High-resolution clock functions: monotonic, realtime, cputime.

Safe Haskell | Safe
Language | Haskell98

System.Clock

Description

High-resolution, realtime clock and timer functions for Posix

Synopsis

- data Clock
  - = Monotonic
  - | Realtime
  - | ProcessCPUTime
  - | ThreadCPUTime
  - | MonotonicRaw
  - | Boottime
  - | MonotonicCoarse
  - | RealtimeCoarse
- data TimeSpec = TimeSpec {
  - sec :: !Int64
  - nsec :: !Int64
  }
- getTime :: Clock -> IO TimeSpec
- getRes :: Clock -> IO TimeSpec
- fromNanoSecs :: Integer -> TimeSpec
- toNanoSecs :: TimeSpec -> Integer
- diffTimeSpec :: TimeSpec -> TimeSpec -> TimeSpec
- timeSpecAsNanoSecs :: TimeSpec -> Integer

# Documentation

data 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. (The only suspend-aware monotonic is CLOCK_BOOTTIME on Linux.)

Constructors

Monotonic | 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.
Realtime | 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.
ProcessCPUTime | 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.
ThreadCPUTime | 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.
MonotonicRaw | (since Linux 2.6.28; Linux-specific) Similar to CLOCK_MONOTONIC, but provides access to a raw hardware-based time that is not subject to NTP adjustments or the incremental adjustments performed by adjtime(3).
Boottime | (since Linux 2.6.39; Linux-specific) Identical to CLOCK_MONOTONIC, except it also includes any time that the system is suspended. This allows applications to get a suspend-aware monotonic clock without having to deal with the complications of CLOCK_REALTIME, which may have discontinuities if the time is changed using settimeofday(2).
MonotonicCoarse | (since Linux 2.6.32; Linux-specific) A faster but less precise version of CLOCK_MONOTONIC. Use when you need very fast, but not fine-grained timestamps.
RealtimeCoarse | (since Linux 2.6.32; Linux-specific) A faster but less precise version of CLOCK_REALTIME. Use when you need very fast, but not fine-grained timestamps.

Instances

Enum Clock # |
Methods succ :: Clock -> Clock # pred :: Clock -> Clock # toEnum :: Int -> Clock # fromEnum :: Clock -> Int # enumFrom :: Clock -> [Clock] # enumFromThen :: Clock -> Clock -> [Clock] # enumFromTo :: Clock -> Clock -> [Clock] # enumFromThenTo :: Clock -> Clock -> Clock -> [Clock] #
Eq Clock # |
Methods (==) :: Clock -> Clock -> Bool # (/=) :: Clock -> Clock -> Bool #
Read Clock # |
Methods readsPrec :: Int -> ReadS Clock # readList :: ReadS [Clock] # readPrec :: ReadPrec Clock # readListPrec :: ReadPrec [Clock] #
Show Clock # |
Methods showsPrec :: Int -> Clock -> ShowS # show :: Clock -> String # showList :: [Clock] -> ShowS #
Generic Clock # |
Associated Types type Rep Clock :: * -> * # Methods from :: Clock -> Rep Clock x # to :: Rep Clock x -> Clock #
type Rep Clock # |
type Rep Clock = D1 (MetaData "Clock" "System.Clock" "clock-0.7.2-bxVecpUqndAMeayDi5R9Y" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Monotonic" PrefixI False) U1) (C1 (MetaCons "Realtime" PrefixI False) U1)) ((:+:) (C1 (MetaCons "ProcessCPUTime" PrefixI False) U1) (C1 (MetaCons "ThreadCPUTime" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "MonotonicRaw" PrefixI False) U1) (C1 (MetaCons "Boottime" PrefixI False) U1)) ((:+:) (C1 (MetaCons "MonotonicCoarse" PrefixI False) U1) (C1 (MetaCons "RealtimeCoarse" PrefixI False) U1))))

data TimeSpec #

TimeSpec structure

Constructors

TimeSpec |
Fields sec :: !Int64 seconds nsec :: !Int64 nanoseconds

Instances

Eq TimeSpec # |
Methods (==) :: TimeSpec -> TimeSpec -> Bool # (/=) :: TimeSpec -> TimeSpec -> Bool #
Num TimeSpec # |
Methods (+) :: TimeSpec -> TimeSpec -> TimeSpec # (-) :: TimeSpec -> TimeSpec -> TimeSpec # (*) :: TimeSpec -> TimeSpec -> TimeSpec # negate :: TimeSpec -> TimeSpec # abs :: TimeSpec -> TimeSpec # signum :: TimeSpec -> TimeSpec # fromInteger :: Integer -> TimeSpec #
Ord TimeSpec # |
Methods compare :: TimeSpec -> TimeSpec -> Ordering # (<) :: TimeSpec -> TimeSpec -> Bool # (<=) :: TimeSpec -> TimeSpec -> Bool # (>) :: TimeSpec -> TimeSpec -> Bool # (>=) :: TimeSpec -> TimeSpec -> Bool # max :: TimeSpec -> TimeSpec -> TimeSpec # min :: TimeSpec -> TimeSpec -> TimeSpec #
Read TimeSpec # |
Methods readsPrec :: Int -> ReadS TimeSpec # readList :: ReadS [TimeSpec] # readPrec :: ReadPrec TimeSpec # readListPrec :: ReadPrec [TimeSpec] #
Show TimeSpec # |
Methods showsPrec :: Int -> TimeSpec -> ShowS # show :: TimeSpec -> String # showList :: [TimeSpec] -> ShowS #
Generic TimeSpec # |
Associated Types type Rep TimeSpec :: * -> * # Methods from :: TimeSpec -> Rep TimeSpec x # to :: Rep TimeSpec x -> TimeSpec #
Storable TimeSpec # |
Methods sizeOf :: TimeSpec -> Int # alignment :: TimeSpec -> Int # peekElemOff :: Ptr TimeSpec -> Int -> IO TimeSpec # pokeElemOff :: Ptr TimeSpec -> Int -> TimeSpec -> IO () # peekByteOff :: Ptr b -> Int -> IO TimeSpec # pokeByteOff :: Ptr b -> Int -> TimeSpec -> IO () # peek :: Ptr TimeSpec -> IO TimeSpec # poke :: Ptr TimeSpec -> TimeSpec -> IO () #
type Rep TimeSpec # |
type Rep TimeSpec = D1 (MetaData "TimeSpec" "System.Clock" "clock-0.7.2-bxVecpUqndAMeayDi5R9Y" False) (C1 (MetaCons "TimeSpec" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "sec") SourceUnpack SourceStrict DecidedUnpack) (Rec0 Int64)) (S1 (MetaSel (Just Symbol "nsec") SourceUnpack SourceStrict DecidedUnpack) (Rec0 Int64))))

getTime :: Clock -> IO TimeSpec #

The `getTime` function shall return the current value for the specified clock.

getRes :: 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.

fromNanoSecs :: Integer -> TimeSpec #

TimeSpec from nano seconds.

toNanoSecs :: TimeSpec -> Integer #

TimeSpec to nano seconds.

diffTimeSpec :: TimeSpec -> TimeSpec -> TimeSpec #

Compute the absolute difference.

timeSpecAsNanoSecs :: TimeSpec -> Integer #

Deprecated: Use toNanoSecs instead! Replaced timeSpecAsNanoSecs with the same signature TimeSpec -> Integer

TimeSpec as nano seconds.