module Chronos.Internal.CTimespec where
import Foreign
import Foreign.C
data CTimespec = MkCTimespec CTime CLong
instance Storable CTimespec where
sizeOf _ = (16)
alignment _ = alignment (undefined :: CLong)
peek p = do
s <- (\hsc_ptr -> peekByteOff hsc_ptr 0) p
ns <- (\hsc_ptr -> peekByteOff hsc_ptr 8) p
return (MkCTimespec s ns)
poke p (MkCTimespec s ns) = do
(\hsc_ptr -> pokeByteOff hsc_ptr 0) p s
(\hsc_ptr -> pokeByteOff hsc_ptr 8) p ns
foreign import ccall unsafe "time.h clock_gettime"
clock_gettime :: Int32 -> Ptr CTimespec -> IO CInt
getCTimespec :: IO CTimespec
getCTimespec = alloca (\ptspec -> do
throwErrnoIfMinus1_ "clock_gettime" $
clock_gettime 0 ptspec
peek ptspec
)