summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2006-09-11 22:32:10 +0000
committerIan Lynagh <igloo@earth.li>2006-09-11 22:32:10 +0000
commit186a80cbcfbe0490ddd153e5f75faac23f4e5021 (patch)
tree8bcb8f900fafa9bccde70c4dc2e65e2fe554fff0 /rts
parent917c16c4f408b2b463f9834d2f0f937a4862c046 (diff)
downloadhaskell-186a80cbcfbe0490ddd153e5f75faac23f4e5021.tar.gz
Fix ~2000 second profiling time wrapping bug
Diffstat (limited to 'rts')
-rw-r--r--rts/ProfHeap.c4
-rw-r--r--rts/posix/GetTime.c6
2 files changed, 5 insertions, 5 deletions
diff --git a/rts/ProfHeap.c b/rts/ProfHeap.c
index 8f4c8baa2f..c161d0c6a7 100644
--- a/rts/ProfHeap.c
+++ b/rts/ProfHeap.c
@@ -386,9 +386,9 @@ printSample(rtsBool beginSample, StgDouble sampleValue)
{
StgDouble fractionalPart, integralPart;
fractionalPart = modf(sampleValue, &integralPart);
- fprintf(hp_file, "%s %d.%02d\n",
+ fprintf(hp_file, "%s %" FMT_Word64 ".%02" FMT_Word64 "\n",
(beginSample ? "BEGIN_SAMPLE" : "END_SAMPLE"),
- (int)integralPart, (int)(fractionalPart * 100));
+ (StgWord64)integralPart, (StgWord64)(fractionalPart * 100));
}
/* --------------------------------------------------------------------------
diff --git a/rts/posix/GetTime.c b/rts/posix/GetTime.c
index 89d83a31cb..0e591ef551 100644
--- a/rts/posix/GetTime.c
+++ b/rts/posix/GetTime.c
@@ -44,7 +44,7 @@ Ticks getProcessCPUTime(void)
{
struct rusage t;
getrusage(RUSAGE_SELF, &t);
- return (t.ru_utime.tv_sec * TICKS_PER_SECOND +
+ return ((Ticks)t.ru_utime.tv_sec * TICKS_PER_SECOND +
((Ticks)t.ru_utime.tv_usec * TICKS_PER_SECOND)/1000000);
}
@@ -52,7 +52,7 @@ Ticks getProcessElapsedTime(void)
{
struct timeval tv;
gettimeofday(&tv, (struct timezone *) NULL);
- return (tv.tv_sec * TICKS_PER_SECOND +
+ return ((Ticks)tv.tv_sec * TICKS_PER_SECOND +
((Ticks)tv.tv_usec * TICKS_PER_SECOND)/1000000);
}
@@ -120,7 +120,7 @@ Ticks getThreadCPUTime(void)
// reliable on Linux, but it's the best we have.
struct timespec ts;
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
- return (ts.tv_sec * TICKS_PER_SECOND +
+ return ((Ticks)ts.tv_sec * TICKS_PER_SECOND +
((Ticks)ts.tv_nsec * TICKS_PER_SECOND) / 1000000000);
#else
return getProcessCPUTime();