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