{-# LINE 1 "libraries/base/./GHC/Event/Clock.hsc" #-} {-# LANGUAGE Trustworthy #-} {-# LINE 2 "libraries/base/./GHC/Event/Clock.hsc" #-} {-# LANGUAGE NoImplicitPrelude, BangPatterns, ForeignFunctionInterface, CApiFFI #-} module GHC.Event.Clock (getMonotonicTime, initializeTimer) where {-# LINE 7 "libraries/base/./GHC/Event/Clock.hsc" #-} import Foreign import Foreign.C.Types import GHC.Base import GHC.Real {-# LINE 18 "libraries/base/./GHC/Event/Clock.hsc" #-} -- TODO: Implement this for Windows. initializeTimer :: IO () -- | Return monotonic time in seconds, since some unspecified starting point getMonotonicTime :: IO Double ------------------------------------------------------------------------ -- FFI binding {-# LINE 62 "libraries/base/./GHC/Event/Clock.hsc" #-} getMonotonicTime = do with 0.0 $ \timeptr -> do absolute_time timeptr ctime <- peek timeptr let !time = realToFrac ctime return time foreign import capi unsafe "HsBase.h absolute_time" absolute_time :: Ptr CDouble -> IO () foreign import capi unsafe "HsBase.h initialize_timer" initializeTimer :: IO () {-# LINE 109 "libraries/base/./GHC/Event/Clock.hsc" #-}