From e6b77ede40392f0b18ea642a7f3f56edbd30770b Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Mon, 20 Dec 2004 00:58:53 +0000 Subject: [PATCH] For PR351: * Add GetMallocUsage as a wrapper around mallinfo() * Add GetTotalMemoryUsage to get approximate RSS size * Add GetTimeUsage to get elapsed/system/user time git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19051 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/System/Process.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/include/llvm/System/Process.h b/include/llvm/System/Process.h index 729c000e38d..56028fb7bc4 100644 --- a/include/llvm/System/Process.h +++ b/include/llvm/System/Process.h @@ -14,6 +14,8 @@ #ifndef LLVM_SYSTEM_PROCESS_H #define LLVM_SYSTEM_PROCESS_H +#include "llvm/System/TimeValue.h" + namespace llvm { namespace sys { @@ -32,6 +34,35 @@ namespace sys { /// @brief Get the virtual memory page size static unsigned GetPageSize(); + /// This static function will return the total amount of memory allocated + /// by the process. This only counts the memory allocated via the malloc, + /// calloc and realloc functions and includes any "free" holes in the + /// allocated space. + /// @throws nothing + /// @brief Return process memory usage. + static uint64_t GetMallocUsage(); + + /// This static function will return the total memory usage of the + /// process. This includes code, data, stack and mapped pages usage. Notei + /// that the value returned here is not necessarily the Running Set Size, + /// it is the total virtual memory usage, regardless of mapped state of + /// that memory. + static uint64_t GetTotalMemoryUsage(); + + /// This static function will set \p user_time to the amount of CPU time + /// spent in user (non-kernel) mode and \p sys_time to the amount of CPU + /// time spent in system (kernel) mode. If the operating system does not + /// support collection of these metrics, a zero TimeValue will be for both + /// values. + static void GetTimeUsage( + TimeValue& elapsed, + ///< Returns the TimeValue::now() giving current time + TimeValue& user_time, + ///< Returns the current amount of user time for the process + TimeValue& sys_time + ///< Returns the current amount of system time for the process + ); + /// @} }; }