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