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

Safe Haskell | None
Language | Haskell2010

System.Clock.Seconds

Synopsis

- data Clock
  - = Monotonic
  - | Realtime
  - | ProcessCPUTime
  - | ThreadCPUTime
  - | MonotonicRaw
  - | Boottime
  - | MonotonicCoarse
  - | RealtimeCoarse
- newtype Seconds = Seconds {
  - toTimeSpec :: TimeSpec
  }
- getTime :: Clock -> IO Seconds
- getRes :: Clock -> IO Seconds
- fromNanoSecs :: Integer -> Seconds
- toNanoSecs :: Seconds -> Integer
- diffTimeSpec :: Seconds -> Seconds -> Seconds

# Documentation

data Clock Source #

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 `Realtime`.

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. (Identical to `Boottime` since Linux 4.17, see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d6ed449afdb38f89a7b38ec50e367559e1b8f71f) `CLOCK_MONOTONIC` (macOS - `SYSTEM_CLOCK`)

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. `CLOCK_REALTIME` (macOS - `CALENDAR_CLOCK`, Windows - `GetSystemTimeAsFileTime`)
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, macOS 10.12) Similar to `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). `CLOCK_MONOTONIC_RAW` (Windows - `QueryPerformanceCounter`, `QueryPerformanceFrequency`)
Boottime | (since Linux 2.6.39; Linux-specific) Identical to `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 `Realtime`, which may have discontinuities if the time is changed using settimeofday(2). (since Linux 4.17; identical to `Monotonic`) `CLOCK_BOOTTIME`
MonotonicCoarse | (since Linux 2.6.32; Linux-specific) A faster but less precise version of `Monotonic`. Use when you need very fast, but not fine-grained timestamps. `CLOCK_MONOTONIC_COARSE`
RealtimeCoarse | (since Linux 2.6.32; Linux-specific) A faster but less precise version of `Realtime`. Use when you need very fast, but not fine-grained timestamps. `CLOCK_REALTIME_COARSE`

#### Instances

Instances details

Enum Clock Source # |
Instance details Defined in System.Clock Methods succ :: Clock -> Clock Source # pred :: Clock -> Clock Source # toEnum :: Int -> Clock Source # fromEnum :: Clock -> Int Source # enumFrom :: Clock -> [Clock] Source # enumFromThen :: Clock -> Clock -> [Clock] Source # enumFromTo :: Clock -> Clock -> [Clock] Source # enumFromThenTo :: Clock -> Clock -> Clock -> [Clock] Source #
Generic Clock Source # |

Instance details

Defined in System.Clock

Associated Types

type Rep Clock |

Instance details

Defined in System.Clock

type Rep Clock = D1 ('MetaData "Clock" "System.Clock" "clock-0.8.4-H2gxghH0gZSWFOI5QDUKZ" 'False) (((C1 ('MetaCons "Monotonic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Realtime" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ProcessCPUTime" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ThreadCPUTime" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MonotonicRaw" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Boottime" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MonotonicCoarse" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RealtimeCoarse" 'PrefixI 'False) (U1 :: Type -> Type))))

Methods

from :: Clock -> Rep Clock x Source #

to :: Rep Clock x -> Clock Source #

Read Clock Source # |
Instance details Defined in System.Clock Methods readsPrec :: Int -> ReadS Clock Source # readList :: ReadS [Clock] Source # readPrec :: ReadPrec Clock Source # readListPrec :: ReadPrec [Clock] Source #
Show Clock Source # |
Instance details Defined in System.Clock Methods showsPrec :: Int -> Clock -> ShowS Source # show :: Clock -> String Source # showList :: [Clock] -> ShowS Source #
Eq Clock Source # |
Instance details Defined in System.Clock Methods (==) :: Clock -> Clock -> Bool Source # (/=) :: Clock -> Clock -> Bool Source #
type Rep Clock Source # |

Instance details

Defined in System.Clock

type Rep Clock = D1 ('MetaData "Clock" "System.Clock" "clock-0.8.4-H2gxghH0gZSWFOI5QDUKZ" 'False) (((C1 ('MetaCons "Monotonic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Realtime" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ProcessCPUTime" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ThreadCPUTime" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "MonotonicRaw" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Boottime" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MonotonicCoarse" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RealtimeCoarse" 'PrefixI 'False) (U1 :: Type -> Type))))

newtype Seconds Source #

Constructors

Seconds |

Fields

- toTimeSpec :: TimeSpec

#### Instances

Instances details

Bounded Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods minBound :: Seconds Source # maxBound :: Seconds Source #
Enum Seconds Source # |

Instance details

Defined in System.Clock.Seconds

Methods

succ :: Seconds -> Seconds Source #

pred :: Seconds -> Seconds Source #

toEnum :: Int -> Seconds Source #

fromEnum :: Seconds -> Int Source #

enumFrom :: Seconds -> [Seconds] Source #

enumFromThen :: Seconds -> Seconds -> [Seconds] Source #

enumFromTo :: Seconds -> Seconds -> [Seconds] Source #

enumFromThenTo :: Seconds -> Seconds -> Seconds -> [Seconds] Source #

Storable Seconds Source # |

Instance details

Defined in System.Clock.Seconds

Methods

sizeOf :: Seconds -> Int Source #

alignment :: Seconds -> Int Source #

peekElemOff :: Ptr Seconds -> Int -> IO Seconds Source #

pokeElemOff :: Ptr Seconds -> Int -> Seconds -> IO () Source #

peekByteOff :: Ptr b -> Int -> IO Seconds Source #

pokeByteOff :: Ptr b -> Int -> Seconds -> IO () Source #

peek :: Ptr Seconds -> IO Seconds Source #

poke :: Ptr Seconds -> Seconds -> IO () Source #

Generic Seconds Source # |

Instance details

Defined in System.Clock.Seconds

Associated Types

type Rep Seconds |
Instance details Defined in System.Clock.Seconds type Rep Seconds = D1 ('MetaData "Seconds" "System.Clock.Seconds" "clock-0.8.4-H2gxghH0gZSWFOI5QDUKZ" 'True) (C1 ('MetaCons "Seconds" 'PrefixI 'True) (S1 ('MetaSel ('Just "toTimeSpec") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TimeSpec)))

Methods

from :: Seconds -> Rep Seconds x Source #

to :: Rep Seconds x -> Seconds Source #

Num Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods (+) :: Seconds -> Seconds -> Seconds Source # (-) :: Seconds -> Seconds -> Seconds Source # (*) :: Seconds -> Seconds -> Seconds Source # negate :: Seconds -> Seconds Source # abs :: Seconds -> Seconds Source # signum :: Seconds -> Seconds Source # fromInteger :: Integer -> Seconds Source #
Read Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods readsPrec :: Int -> ReadS Seconds Source # readList :: ReadS [Seconds] Source # readPrec :: ReadPrec Seconds Source # readListPrec :: ReadPrec [Seconds] Source #
Fractional Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods (/) :: Seconds -> Seconds -> Seconds Source # recip :: Seconds -> Seconds Source # fromRational :: Rational -> Seconds Source #
Real Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods toRational :: Seconds -> Rational Source #
RealFrac Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods properFraction :: Integral b => Seconds -> (b, Seconds) Source # truncate :: Integral b => Seconds -> b Source # round :: Integral b => Seconds -> b Source # ceiling :: Integral b => Seconds -> b Source # floor :: Integral b => Seconds -> b Source #
Show Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods showsPrec :: Int -> Seconds -> ShowS Source # show :: Seconds -> String Source # showList :: [Seconds] -> ShowS Source #
Eq Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods (==) :: Seconds -> Seconds -> Bool Source # (/=) :: Seconds -> Seconds -> Bool Source #
Ord Seconds Source # |
Instance details Defined in System.Clock.Seconds Methods compare :: Seconds -> Seconds -> Ordering Source # (<) :: Seconds -> Seconds -> Bool Source # (<=) :: Seconds -> Seconds -> Bool Source # (>) :: Seconds -> Seconds -> Bool Source # (>=) :: Seconds -> Seconds -> Bool Source # max :: Seconds -> Seconds -> Seconds Source # min :: Seconds -> Seconds -> Seconds Source #
type Rep Seconds Source # |
Instance details Defined in System.Clock.Seconds type Rep Seconds = D1 ('MetaData "Seconds" "System.Clock.Seconds" "clock-0.8.4-H2gxghH0gZSWFOI5QDUKZ" 'True) (C1 ('MetaCons "Seconds" 'PrefixI 'True) (S1 ('MetaSel ('Just "toTimeSpec") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TimeSpec)))

getTime :: Clock -> IO Seconds Source #

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

getRes :: Clock -> IO Seconds Source #

The `getRes` function shall return the resolution of any clock. Clock resolutions are implementation-defined and cannot be set by a process.

fromNanoSecs :: Integer -> Seconds Source #

Seconds from nano seconds.

toNanoSecs :: Seconds -> Integer Source #

Seconds to nano seconds.

diffTimeSpec :: Seconds -> Seconds -> Seconds Source #

Compute the absolute difference.