Commit 186a80cb authored by Ian Lynagh's avatar Ian Lynagh
Browse files

Fix ~2000 second profiling time wrapping bug

parent 917c16c4
...@@ -386,9 +386,9 @@ printSample(rtsBool beginSample, StgDouble sampleValue) ...@@ -386,9 +386,9 @@ printSample(rtsBool beginSample, StgDouble sampleValue)
{ {
StgDouble fractionalPart, integralPart; StgDouble fractionalPart, integralPart;
fractionalPart = modf(sampleValue, &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"), (beginSample ? "BEGIN_SAMPLE" : "END_SAMPLE"),
(int)integralPart, (int)(fractionalPart * 100)); (StgWord64)integralPart, (StgWord64)(fractionalPart * 100));
} }
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
......
...@@ -44,7 +44,7 @@ Ticks getProcessCPUTime(void) ...@@ -44,7 +44,7 @@ Ticks getProcessCPUTime(void)
{ {
struct rusage t; struct rusage t;
getrusage(RUSAGE_SELF, &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); ((Ticks)t.ru_utime.tv_usec * TICKS_PER_SECOND)/1000000);
} }
...@@ -52,7 +52,7 @@ Ticks getProcessElapsedTime(void) ...@@ -52,7 +52,7 @@ Ticks getProcessElapsedTime(void)
{ {
struct timeval tv; struct timeval tv;
gettimeofday(&tv, (struct timezone *) NULL); 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); ((Ticks)tv.tv_usec * TICKS_PER_SECOND)/1000000);
} }
...@@ -120,7 +120,7 @@ Ticks getThreadCPUTime(void) ...@@ -120,7 +120,7 @@ Ticks getThreadCPUTime(void)
// reliable on Linux, but it's the best we have. // reliable on Linux, but it's the best we have.
struct timespec ts; struct timespec ts;
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &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); ((Ticks)ts.tv_nsec * TICKS_PER_SECOND) / 1000000000);
#else #else
return getProcessCPUTime(); return getProcessCPUTime();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment