diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-12-20 00:59:28 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-12-20 00:59:28 +0000 |
commit | 721d9aa06043bf59efe17443cdee418982bd55ac (patch) | |
tree | 041913d2ee9c8b63ea74ab811d35cc79eefbcc4e /lib/System/Win32/Process.cpp | |
parent | a4775838e23ad71e057b9f3cce5e12b1d6d18174 (diff) |
For PR351:
* Implement GetMallocUsage to get usage of malloc heap
* Implement GetMemoryUsage to get total memory usage of process
* Implement GetTimeUsage to get elapsed/user/system time
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19055 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/System/Win32/Process.cpp')
-rw-r--r-- | lib/System/Win32/Process.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/System/Win32/Process.cpp b/lib/System/Win32/Process.cpp index 5a4b4f0dbb..b4ed4b7946 100644 --- a/lib/System/Win32/Process.cpp +++ b/lib/System/Win32/Process.cpp @@ -41,5 +41,48 @@ Process::GetPageSize() { return PageSize; } +void* +uint64_t +Process::GetMallocUsage() +{ +#ifdef HAVE_MALLINFO + struct mallinfo mi = ::mallinfo(); + return mi.uordblks; +#warning Cannot get malloc info on this platform + return 0; +#endif +} + +uint64_t +Process::GetTotalMemoryUsage() +{ +#ifdef HAVE_MALLINFO + struct mallinfo mi = ::mallinfo(); + return mi.uordblks + mi.hblkhd +#else +#warning Cannot get total memory size on this platform + return 0; +#endif +} + +void +Process::GetTimeUsage( + TimeValue& elapsed, TimeValue& user_time, TimeValue& sys_time) +{ + elapsed = TimeValue::now(); + + unsigned __int64 ProcCreate, ProcExit, KernelTime, UserTime; + GetProcessTimes(GetCurrentProcess(), (FILETIME*)&ProcCreate, + (FILETIME*)&ProcExit, (FILETIME*)&KernelTime, + (FILETIME*)&UserTime + ); + + // FILETIME's are # of 100 nanosecond ticks (1/10th of a microsecond) + user_time.seconds( UserTime / 10000000 ); + user_time.nanoseconds( (UserTime % 10000000) * 100 ); + sys_time.seconds( KernelTime / 10000000 ); + user_time.nanoseconds( (UserTime % 10000000) * 100 ); +} + } // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab |