From 8b6628997fd07f448afd414be0119ccb595f64ee Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Mon, 20 Dec 2004 21:43:33 +0000 Subject: [PATCH] Implement GetTimeUsage correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19074 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/System/Unix/Process.cpp | 12 ++++++++---- lib/System/Unix/Process.inc | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/System/Unix/Process.cpp b/lib/System/Unix/Process.cpp index eef6535ee90..1c203ab50c5 100644 --- a/lib/System/Unix/Process.cpp +++ b/lib/System/Unix/Process.cpp @@ -92,10 +92,14 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time, #if defined(HAVE_GETRUSAGE) struct rusage usage; ::getrusage(RUSAGE_SELF, &usage); - user_time.seconds( usage.ru_utime.tv_sec ); - user_time.microseconds( usage.ru_utime.tv_usec ); - sys_time.seconds( usage.ru_stime.tv_sec ); - sys_time.microseconds( usage.ru_stime.tv_usec ); + user_time = TimeValue( + static_cast( usage.ru_utime.tv_sec ), + static_cast( usage.ru_utime.tv_usec * + TimeValue::NANOSECONDS_PER_MICROSECOND ) ); + sys_time = TimeValue( + static_cast( usage.ru_stime.tv_sec ), + static_cast( usage.ru_stime.tv_usec * + TimeValue::NANOSECONDS_PER_MICROSECOND ) ); #else #warning Cannot get usage times on this platform user_time.seconds(0); diff --git a/lib/System/Unix/Process.inc b/lib/System/Unix/Process.inc index eef6535ee90..1c203ab50c5 100644 --- a/lib/System/Unix/Process.inc +++ b/lib/System/Unix/Process.inc @@ -92,10 +92,14 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time, #if defined(HAVE_GETRUSAGE) struct rusage usage; ::getrusage(RUSAGE_SELF, &usage); - user_time.seconds( usage.ru_utime.tv_sec ); - user_time.microseconds( usage.ru_utime.tv_usec ); - sys_time.seconds( usage.ru_stime.tv_sec ); - sys_time.microseconds( usage.ru_stime.tv_usec ); + user_time = TimeValue( + static_cast( usage.ru_utime.tv_sec ), + static_cast( usage.ru_utime.tv_usec * + TimeValue::NANOSECONDS_PER_MICROSECOND ) ); + sys_time = TimeValue( + static_cast( usage.ru_stime.tv_sec ), + static_cast( usage.ru_stime.tv_usec * + TimeValue::NANOSECONDS_PER_MICROSECOND ) ); #else #warning Cannot get usage times on this platform user_time.seconds(0); -- 2.34.1