+{-# 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"
--
#if defined(HAVE_GETRUSAGE) && ! irix_HOST_OS && ! solaris2_HOST_OS
allocaBytes (#const sizeof(struct rusage)) $ \ p_rusage -> do
- getrusage (#const RUSAGE_SELF) p_rusage
+ throwErrnoIfMinus1_ "getrusage" $ getrusage (#const RUSAGE_SELF) p_rusage
let ru_utime = (#ptr struct rusage, ru_utime) p_rusage
let ru_stime = (#ptr struct rusage, ru_stime) p_rusage
#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)