/*** Copyright (C) 2023 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: CpuLoadSampler.hpp Date: 2023-10-28 Author: Reece ***/ #pragma once namespace Aurora::HWInfo { struct CpuLoadSamplerState { double GetLoad(AuUInt32 uMinSamplePeriod, bool bThread, bool bCountKernelUsage); AuUInt64 uPrevTimes[2] {}; double dPrevLoad {}; bool bSet {}; }; struct CpuLoadSamplerImpl : ICpuLoadSampler { CpuLoadSamplerImpl(AuUInt32 uMinSamplePeriodMS, bool bThreadMode, bool bCountKernelUsage); ~CpuLoadSamplerImpl(); double GetLoad() override; AuUInt32 uMinSamplePeriod {}; bool bThreadMode {}; bool bCountKernelUsage {}; CpuLoadSamplerState processState; AuTLSVariable threadState; }; }