diff options
Diffstat (limited to 'rts/posix/GetTime.c')
-rw-r--r-- | rts/posix/GetTime.c | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/rts/posix/GetTime.c b/rts/posix/GetTime.c index eab7177fe5..c31b319af4 100644 --- a/rts/posix/GetTime.c +++ b/rts/posix/GetTime.c @@ -44,7 +44,7 @@ // we'll implement getProcessCPUTime() and getProcessElapsedTime() // separately, using getrusage() and gettimeofday() respectively -Ticks getProcessCPUTime(void) +Time getProcessCPUTime(void) { #if !defined(BE_CONSERVATIVE) && defined(HAVE_CLOCK_GETTIME) && defined (_SC_CPUTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) && defined(HAVE_SYSCONF) static int checked_sysconf = 0; @@ -59,8 +59,7 @@ Ticks getProcessCPUTime(void) int res; res = clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts); if (res == 0) { - return ((Ticks)ts.tv_sec * TICKS_PER_SECOND + - ((Ticks)ts.tv_nsec * TICKS_PER_SECOND) / 1000000000); + return SecondsToTime(ts.tv_sec) + NSToTime(ts.tv_nsec); } } #endif @@ -69,20 +68,18 @@ Ticks getProcessCPUTime(void) { struct rusage t; getrusage(RUSAGE_SELF, &t); - return ((Ticks)t.ru_utime.tv_sec * TICKS_PER_SECOND + - ((Ticks)t.ru_utime.tv_usec * TICKS_PER_SECOND)/1000000); + return SecondsToTime(t.ru_utime.tv_sec) + USToTime(t.ru_utime.tv_usec); } } -Ticks getProcessElapsedTime(void) +Time getProcessElapsedTime(void) { struct timeval tv; gettimeofday(&tv, (struct timezone *) NULL); - return ((Ticks)tv.tv_sec * TICKS_PER_SECOND + - ((Ticks)tv.tv_usec * TICKS_PER_SECOND)/1000000); + return SecondsToTime(tv.tv_sec) + USToTime(tv.tv_usec); } -void getProcessTimes(Ticks *user, Ticks *elapsed) +void getProcessTimes(Time *user, Time *elapsed) { *user = getProcessCPUTime(); *elapsed = getProcessElapsedTime(); @@ -92,29 +89,29 @@ void getProcessTimes(Ticks *user, Ticks *elapsed) // we'll use the old times() API. -Ticks getProcessCPUTime(void) +Time getProcessCPUTime(void) { #if !defined(THREADED_RTS) && USE_PAPI long long usec; if ((usec = PAPI_get_virt_usec()) < 0) { barf("PAPI_get_virt_usec: %lld", usec); } - return ((usec * TICKS_PER_SECOND) / 1000000); + return USToTime(usec); #else - Ticks user, elapsed; + Time user, elapsed; getProcessTimes(&user,&elapsed); return user; #endif } -Ticks getProcessElapsedTime(void) +Time getProcessElapsedTime(void) { - Ticks user, elapsed; + Time user, elapsed; getProcessTimes(&user,&elapsed); return elapsed; } -void getProcessTimes(Ticks *user, Ticks *elapsed) +void getProcessTimes(Time *user, Time *elapsed) { static nat ClockFreq = 0; @@ -141,20 +138,20 @@ void getProcessTimes(Ticks *user, Ticks *elapsed) struct tms t; clock_t r = times(&t); - *user = (((Ticks)t.tms_utime * TICKS_PER_SECOND) / ClockFreq); - *elapsed = (((Ticks)r * TICKS_PER_SECOND) / ClockFreq); + *user = SecondsToTime(t.tms_utime) / ClockFreq; + *elapsed = SecondsToTime(r) / ClockFreq; } #endif // HAVE_TIMES -Ticks getThreadCPUTime(void) +Time getThreadCPUTime(void) { #if USE_PAPI long long usec; if ((usec = PAPI_get_virt_usec()) < 0) { barf("PAPI_get_virt_usec: %lld", usec); } - return ((usec * TICKS_PER_SECOND) / 1000000); + return USToTime(usec); #elif !defined(BE_CONSERVATIVE) && defined(HAVE_CLOCK_GETTIME) && defined (_SC_THREAD_CPUTIME) && defined(CLOCK_THREAD_CPUTIME_ID) && defined(HAVE_SYSCONF) { @@ -172,8 +169,7 @@ Ticks getThreadCPUTime(void) int res; res = clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts); if (res == 0) { - return ((Ticks)ts.tv_sec * TICKS_PER_SECOND + - ((Ticks)ts.tv_nsec * TICKS_PER_SECOND) / 1000000000); + return SecondsToTime(ts.tv_sec) + NSToTime(ts.tv_nsec); } } } |