+{-# LANGUAGE CPP, NondecreasingIndentation, ForeignFunctionInterface #-}
+
-----------------------------------------------------------------------------
-- |
-- Module : System.CPUTime
#endif
#ifdef __GLASGOW_HASKELL__
-import Foreign
+import Foreign hiding (unsafePerformIO)
import Foreign.C
+#if !defined(CLK_TCK)
+import System.IO.Unsafe (unsafePerformIO)
+#endif
#include "HsBaseConfig.h"
let ru_utime = (#ptr struct rusage, ru_utime) p_rusage
let ru_stime = (#ptr struct rusage, ru_stime) p_rusage
u_sec <- (#peek struct timeval,tv_sec) ru_utime :: IO CTime
- u_usec <- (#peek struct timeval,tv_usec) ru_utime :: IO CTime
+ u_usec <- (#peek struct timeval,tv_usec) ru_utime :: IO CSUSeconds
s_sec <- (#peek struct timeval,tv_sec) ru_stime :: IO CTime
- s_usec <- (#peek struct timeval,tv_usec) ru_stime :: IO CTime
+ s_usec <- (#peek struct timeval,tv_usec) ru_stime :: IO CSUSeconds
return ((realToInteger u_sec * 1000000 + realToInteger u_usec +
realToInteger s_sec * 1000000 + realToInteger s_usec)
* 1000000)
#else
# if defined(HAVE_TIMES)
allocaBytes (#const sizeof(struct tms)) $ \ p_tms -> do
- times p_tms
+ _ <- times p_tms
u_ticks <- (#peek struct tms,tms_utime) p_tms :: IO CClock
s_ticks <- (#peek struct tms,tms_stime) p_tms :: IO CClock
return (( (realToInteger u_ticks + realToInteger s_ticks) * 1000000000000)