llvm-project/lldb/tools/lldb-perf/lib/MemoryGauge.h

148 lines
2.7 KiB
C++

//===-- MemoryGauge.h -------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef __PerfTestDriver__MemoryGauge__
#define __PerfTestDriver__MemoryGauge__
#include "Gauge.h"
#include "Results.h"
#include <mach/task_info.h>
namespace lldb_perf {
class MemoryStats
{
public:
MemoryStats (mach_vm_size_t virtual_size = 0,
mach_vm_size_t resident_size = 0,
mach_vm_size_t max_resident_size = 0);
MemoryStats (const MemoryStats& rhs);
MemoryStats&
operator = (const MemoryStats& rhs);
MemoryStats&
operator += (const MemoryStats& rhs);
MemoryStats
operator - (const MemoryStats& rhs);
MemoryStats
operator + (const MemoryStats& rhs);
MemoryStats
operator / (size_t rhs);
MemoryStats
operator * (const MemoryStats& rhs);
mach_vm_size_t
GetVirtualSize () const
{
return m_virtual_size;
}
mach_vm_size_t
GetResidentSize () const
{
return m_resident_size;
}
mach_vm_size_t
GetMaxResidentSize () const
{
return m_max_resident_size;
}
void
SetVirtualSize (mach_vm_size_t vs)
{
m_virtual_size = vs;
}
void
SetResidentSize (mach_vm_size_t rs)
{
m_resident_size = rs;
}
void
SetMaxResidentSize (mach_vm_size_t mrs)
{
m_max_resident_size = mrs;
}
Results::ResultSP
GetResult (const char *name, const char *description) const;
private:
mach_vm_size_t m_virtual_size;
mach_vm_size_t m_resident_size;
mach_vm_size_t m_max_resident_size;
};
class MemoryGauge : public Gauge<MemoryStats>
{
public:
MemoryGauge ();
virtual
~MemoryGauge ()
{
}
void
Start ();
ValueType
Stop ();
virtual ValueType
GetStartValue() const
{
return m_start;
}
virtual ValueType
GetStopValue() const
{
return m_stop;
}
virtual ValueType
GetDeltaValue() const;
private:
enum class State
{
eNeverUsed,
eCounting,
eStopped
};
ValueType
Now ();
State m_state;
ValueType m_start;
ValueType m_stop;
ValueType m_delta;
};
template <>
Results::ResultSP
GetResult (const char *description, MemoryStats value);
} // namespace lldb_perf
lldb_perf::MemoryStats
sqrt (const lldb_perf::MemoryStats& arg);
#endif // #ifndef __PerfTestDriver__MemoryGauge__