MemoryGauge.h revision d3a8d6565ff40fd99533f50a085ace806a9300ee
1//===-- MemoryGauge.h -------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef __PerfTestDriver__MemoryGauge__ 11#define __PerfTestDriver__MemoryGauge__ 12 13#include "Gauge.h" 14 15#include <mach/task_info.h> 16 17namespace lldb_perf 18{ 19class MemoryStats 20{ 21public: 22 MemoryStats (mach_vm_size_t virtual_size = 0, 23 mach_vm_size_t resident_size = 0, 24 mach_vm_size_t max_resident_size = 0); 25 MemoryStats (const MemoryStats& rhs); 26 27 MemoryStats& 28 operator = (const MemoryStats& rhs); 29 30 MemoryStats& 31 operator += (const MemoryStats& rhs); 32 33 MemoryStats 34 operator - (const MemoryStats& rhs); 35 36 MemoryStats& 37 operator / (size_t rhs); 38 39 mach_vm_size_t 40 GetVirtualSize () 41 { 42 return m_virtual_size; 43 } 44 45 mach_vm_size_t 46 GetResidentSize () 47 { 48 return m_resident_size; 49 } 50 51 mach_vm_size_t 52 GetMaxResidentSize () 53 { 54 return m_max_resident_size; 55 } 56 57 void 58 SetVirtualSize (mach_vm_size_t vs) 59 { 60 m_virtual_size = vs; 61 } 62 63 void 64 SetResidentSize (mach_vm_size_t rs) 65 { 66 m_resident_size = rs; 67 } 68 69 void 70 SetMaxResidentSize (mach_vm_size_t mrs) 71 { 72 m_max_resident_size = mrs; 73 } 74 75private: 76 mach_vm_size_t m_virtual_size; 77 mach_vm_size_t m_resident_size; 78 mach_vm_size_t m_max_resident_size; 79}; 80 81class MemoryGauge : public Gauge<MemoryStats> 82{ 83public: 84 MemoryGauge (); 85 86 virtual 87 ~MemoryGauge () 88 { 89 } 90 91 void 92 Start (); 93 94 SizeType 95 Stop (); 96 97 SizeType 98 GetValue (); 99 100private: 101 enum class State 102 { 103 eNeverUsed, 104 eCounting, 105 eStopped 106 }; 107 108 SizeType 109 Now (); 110 111 SizeType m_start; 112 State m_state; 113 SizeType m_value; 114 115}; 116} 117 118#endif /* defined(__PerfTestDriver__MemoryGauge__) */ 119