MemoryGauge.h revision 53bba61c0b9f3b3ceff5835f79d61efa0d81847c
1// 2// MemoryGauge.h 3// PerfTestDriver 4// 5// Created by Enrico Granata on 3/6/13. 6// Copyright (c) 2013 Apple Inc. All rights reserved. 7// 8 9#ifndef __PerfTestDriver__MemoryGauge__ 10#define __PerfTestDriver__MemoryGauge__ 11 12#include "Gauge.h" 13 14#include <mach/task_info.h> 15 16namespace lldb_perf 17{ 18class MemoryStats 19{ 20public: 21 MemoryStats (); 22 MemoryStats (mach_vm_size_t,mach_vm_size_t = 0, mach_vm_size_t = 0); 23 MemoryStats (const MemoryStats& rhs); 24 25 MemoryStats& 26 operator = (const MemoryStats& rhs); 27 28 MemoryStats& 29 operator += (const MemoryStats& rhs); 30 31 MemoryStats 32 operator - (const MemoryStats& rhs); 33 34 MemoryStats& 35 operator / (size_t rhs); 36 37 mach_vm_size_t 38 GetVirtualSize () 39 { 40 return m_virtual_size; 41 } 42 43 mach_vm_size_t 44 GetResidentSize () 45 { 46 return m_resident_size; 47 } 48 49 mach_vm_size_t 50 GetMaxResidentSize () 51 { 52 return m_max_resident_size; 53 } 54 55 void 56 SetVirtualSize (mach_vm_size_t vs) 57 { 58 m_virtual_size = vs; 59 } 60 61 void 62 SetResidentSize (mach_vm_size_t rs) 63 { 64 m_resident_size = rs; 65 } 66 67 void 68 SetMaxResidentSize (mach_vm_size_t mrs) 69 { 70 m_max_resident_size = mrs; 71 } 72 73private: 74 mach_vm_size_t m_virtual_size; 75 mach_vm_size_t m_resident_size; 76 mach_vm_size_t m_max_resident_size; 77}; 78 79class MemoryGauge : public Gauge<MemoryStats> 80{ 81private: 82 enum class State 83 { 84 eMSNeverUsed, 85 eMSCounting, 86 eMSStopped 87 }; 88 89 SizeType 90 now (); 91 92 SizeType m_start; 93 State m_state; 94 SizeType m_value; 95 96public: 97 MemoryGauge (); 98 99 virtual 100 ~MemoryGauge () 101 {} 102 103 void 104 start (); 105 106 SizeType 107 stop (); 108 109 SizeType 110 value (); 111}; 112} 113 114#endif /* defined(__PerfTestDriver__MemoryGauge__) */ 115