import Prelude
+import Data.Ratio
+
+#ifdef __HUGS__
+import Hugs.Time ( getCPUTime, clockTicks )
+#endif
+
+#ifdef __GLASGOW_HASKELL__
import Foreign
import Foreign.C
-import Data.Ratio
-
#include "HsBase.h"
+#endif
+#ifdef __GLASGOW_HASKELL__
-- -----------------------------------------------------------------------------
-- |Computation 'getCPUTime' returns the number of picoseconds CPU time
-- used by the current program. The precision of this result is
foreign import ccall unsafe "GetProcessTimes" getProcessTimes :: Ptr HANDLE -> Ptr FILETIME -> Ptr FILETIME -> Ptr FILETIME -> Ptr FILETIME -> IO CInt
#endif /* not _WIN32 */
+#endif /* __GLASGOW_HASKELL__ */
-- |The 'cpuTimePrecision' constant is the smallest measurable difference
-- in CPU time that the implementation can record, and is given as an
cpuTimePrecision :: Integer
cpuTimePrecision = round ((1000000000000::Integer) % fromIntegral (clockTicks))
+#ifdef __GLASGOW_HASKELL__
clockTicks :: Int
clockTicks =
#if defined(CLK_TCK)
unsafePerformIO (sysconf (#const _SC_CLK_TCK) >>= return . fromIntegral)
foreign import ccall unsafe sysconf :: CInt -> IO CLong
#endif
+#endif /* __GLASGOW_HASKELL__ */