{-# LINE 1 "Foundation/System/Bindings/Time.hsc" #-}
-- |
{-# LINE 2 "Foundation/System/Bindings/Time.hsc" #-}
-- Module      :  Foundation.System.Bindings.Time
-- Maintainer  :  Haskell foundation
--

module Foundation.System.Bindings.Time where

import Foundation.Internal.Base
import Foundation.Primitive.Types.OffsetSize
import Foreign.C.Types


{-# LINE 13 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 14 "Foundation/System/Bindings/Time.hsc" #-}

type CClockId = CInt
data CTimeSpec
data CTimeVal
data CTimeZone

size_CTimeSpec :: CSize
size_CTimeSpec = 16
{-# LINE 22 "Foundation/System/Bindings/Time.hsc" #-}

ofs_CTimeSpec_Seconds :: Offset Word8
ofs_CTimeSpec_Seconds = Offset ((0))
{-# LINE 25 "Foundation/System/Bindings/Time.hsc" #-}

ofs_CTimeSpec_NanoSeconds :: Offset Word8
ofs_CTimeSpec_NanoSeconds = Offset ((8))
{-# LINE 28 "Foundation/System/Bindings/Time.hsc" #-}

size_CTimeVal :: CSize
size_CTimeVal = 16
{-# LINE 31 "Foundation/System/Bindings/Time.hsc" #-}

size_CTimeZone :: CSize
size_CTimeZone = 8
{-# LINE 34 "Foundation/System/Bindings/Time.hsc" #-}

size_CTimeT :: CSize
size_CTimeT = 8
{-# LINE 37 "Foundation/System/Bindings/Time.hsc" #-}


------------------------------------------------------------------------

{-# LINE 50 "Foundation/System/Bindings/Time.hsc" #-}

------------------------------------------------------------------------

{-# LINE 55 "Foundation/System/Bindings/Time.hsc" #-}

------------------------------------------------------------------------

{-# LINE 65 "Foundation/System/Bindings/Time.hsc" #-}


sysTime_CLOCK_REALTIME :: CClockId

{-# LINE 71 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_REALTIME = (0)
{-# LINE 72 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 73 "Foundation/System/Bindings/Time.hsc" #-}

sysTime_CLOCK_MONOTONIC :: CClockId

{-# LINE 78 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_MONOTONIC = (1)
{-# LINE 79 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 80 "Foundation/System/Bindings/Time.hsc" #-}

sysTime_CLOCK_PROCESS_CPUTIME_ID :: CClockId

{-# LINE 85 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_PROCESS_CPUTIME_ID = (2)
{-# LINE 86 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 87 "Foundation/System/Bindings/Time.hsc" #-}

sysTime_CLOCK_THREAD_CPUTIME_ID :: CClockId

{-# LINE 92 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_THREAD_CPUTIME_ID = (3)
{-# LINE 93 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 94 "Foundation/System/Bindings/Time.hsc" #-}


{-# LINE 96 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_MONOTONIC_RAW :: CClockId
sysTime_CLOCK_MONOTONIC_RAW = (4)
{-# LINE 98 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 99 "Foundation/System/Bindings/Time.hsc" #-}


{-# LINE 101 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_REALTIME_COARSE :: CClockId
sysTime_CLOCK_REALTIME_COARSE = (5)
{-# LINE 103 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 104 "Foundation/System/Bindings/Time.hsc" #-}


{-# LINE 109 "Foundation/System/Bindings/Time.hsc" #-}


{-# LINE 111 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_BOOTTIME :: CClockId
sysTime_CLOCK_BOOTTIME = (7)
{-# LINE 113 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 114 "Foundation/System/Bindings/Time.hsc" #-}


{-# LINE 116 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_REALTIME_ALARM :: CClockId
sysTime_CLOCK_REALTIME_ALARM = (8)
{-# LINE 118 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 119 "Foundation/System/Bindings/Time.hsc" #-}


{-# LINE 121 "Foundation/System/Bindings/Time.hsc" #-}
sysTime_CLOCK_BOOTTIME_ALARM :: CClockId
sysTime_CLOCK_BOOTTIME_ALARM = (9)
{-# LINE 123 "Foundation/System/Bindings/Time.hsc" #-}

{-# LINE 124 "Foundation/System/Bindings/Time.hsc" #-}


{-# LINE 129 "Foundation/System/Bindings/Time.hsc" #-}


{-# LINE 136 "Foundation/System/Bindings/Time.hsc" #-}
foreign import ccall unsafe "clock_getres"
    sysTimeClockGetRes :: CClockId -> Ptr CTimeSpec -> IO CInt
foreign import ccall unsafe "clock_gettime"
    sysTimeClockGetTime :: CClockId -> Ptr CTimeSpec -> IO CInt

{-# LINE 141 "Foundation/System/Bindings/Time.hsc" #-}

foreign import ccall unsafe "gettimeofday"
    sysTimeGetTimeOfDay :: Ptr CTimeVal -> Ptr CTimeZone -> IO CInt