#ifndef MRT_CPU_PROFILER_H
#define MRT_CPU_PROFILER_H
#include <thread>
#include "SamplesRecord.h"
namespace MapleRuntime {
class CpuProfiler {
public:
static CpuProfiler& GetInstance()
{
static CpuProfiler instance;
return instance;
}
bool StartCpuProfilerForFile();
bool StopCpuProfilerForFile(const int fd);
SamplesRecord& GetGenerator() { return generator; }
void TryStopSampling();
private:
CpuProfiler() {}
~CpuProfiler();
static void SamplingThread(SamplesRecord& generator);
static void DoSampleStack();
SamplesRecord generator;
std::thread tid;
};
}
#endif