X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Flib%2Fstd%2FCPUTime.hsc;h=c34a3cb337b484d5bb6aebb4f5c314b7e302182a;hb=1d8166f2a3015aef55deff727036e3662855b692;hp=28a7c7d6bae6966340c4092ada00fb28b0e51915;hpb=71063b69b36f7d7a7b3525f240098cb3c7f758d8;p=ghc-hetmet.git diff --git a/ghc/lib/std/CPUTime.hsc b/ghc/lib/std/CPUTime.hsc index 28a7c7d..c34a3cb 100644 --- a/ghc/lib/std/CPUTime.hsc +++ b/ghc/lib/std/CPUTime.hsc @@ -1,5 +1,5 @@ -- ----------------------------------------------------------------------------- --- $Id: CPUTime.hsc,v 1.7 2001/06/28 16:44:18 rrt Exp $ +-- $Id: CPUTime.hsc,v 1.13 2001/09/06 15:15:23 sewardj Exp $ -- -- (c) The University of Glasgow, 1995-2001 -- @@ -7,7 +7,7 @@ module CPUTime ( getCPUTime, -- :: IO Integer - cpuTimePrecision -- :: Integer + cpuTimePrecision -- :: Integer ) where import PrelMarshalAlloc @@ -23,7 +23,7 @@ import PrelArrExtra ( unsafeFreezeByteArray ) import PrelIOBase ( IOException(..) ) import Ratio -#include "cbits/HsStd.h" +#include "HsStd.h" -- ----------------------------------------------------------------------------- -- Computation `getCPUTime' returns the number of picoseconds CPU time @@ -37,7 +37,7 @@ import Ratio getCPUTime :: IO Integer getCPUTime = do -#ifndef _WIN32 +#if !defined(mingw32_TARGET_OS) && !defined(cygwin32_TARGET_OS) -- getrusage() is right royal pain to deal with when targetting multiple -- versions of Solaris, since some versions supply it in libc (2.3 and 2.5), -- while 2.4 has got it in libucb (I wouldn't be too surprised if it was back @@ -51,10 +51,10 @@ getCPUTime = do 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 CLong - u_usec <- (#peek struct timeval,tv_usec) ru_utime :: IO CLong - s_sec <- (#peek struct timeval,tv_sec) ru_stime :: IO CLong - s_usec <- (#peek struct timeval,tv_usec) ru_stime :: IO CLong + u_sec <- (#peek struct timeval,tv_sec) ru_utime :: IO CTime + u_usec <- (#peek struct timeval,tv_usec) ru_utime :: IO CTime + s_sec <- (#peek struct timeval,tv_sec) ru_stime :: IO CTime + s_usec <- (#peek struct timeval,tv_usec) ru_stime :: IO CTime return ((fromIntegral u_sec * 1000000 + fromIntegral u_usec + fromIntegral s_sec * 1000000 + fromIntegral s_usec) @@ -69,10 +69,10 @@ foreign import unsafe getrusage :: CInt -> Ptr CRUsage -> IO CInt u_ticks <- (#peek struct tms,tms_utime) p_tms :: IO CClock s_ticks <- (#peek struct tms,tms_stime) p_tms :: IO CClock return (( (fromIntegral u_ticks + fromIntegral s_ticks) * 1000000000000) - `div` clockTicks) + `div` fromIntegral clockTicks) type CTms = () -foreign import unsafe times :: Ptr CTms -> CClock +foreign import unsafe times :: Ptr CTms -> IO CClock # else ioException (IOError Nothing UnsupportedOperation "getCPUTime" @@ -81,7 +81,7 @@ foreign import unsafe times :: Ptr CTms -> CClock # endif #endif -#else /* _WIN32 */ +#else /* win32 */ allocaBytes (#const sizeof(FILETIME)) $ \ p_creationTime -> do allocaBytes (#const sizeof(FILETIME)) $ \ p_exitTime -> do allocaBytes (#const sizeof(FILETIME)) $ \ p_kernelTime -> do