This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

38 lines
1.3 KiB
C

#ifndef CPU_MONITORING_H
#define CPU_MONITORING_H
/*
This header defines functions and structures for controlling the measurement of
CPU frequency in order to detect thermal throttling. For details see the
associated source file.
*/
struct CPUFrequencyResults {
double m_timeStamp; // Time (from Plat_FloatTime) when the measurements
// were made.
float m_GHz;
float m_percentage;
float m_lowestPercentage;
};
// Call this to get results.
// When CPU monitoring is 'disabled' it may still be running at a low frequency,
// for OGS purposes or for proactively warning users of problems. If
// fGetDisabledResults is true then results will be returned when disabled (if
// available).
PLATFORM_INTERFACE CPUFrequencyResults
GetCPUFrequencyResults(bool fGetDisabledResults = false);
// Call this to set the monitoring frequency. Intervals of 2-5 seconds (2,000 to
// 5,000 ms) are recommended. An interval of zero will disable CPU monitoring.
// Short delays (below about 300 ms) will be rounded up.
PLATFORM_INTERFACE void SetCPUMonitoringInterval(unsigned nDelayMilliseconds);
// Warn with increasing strident colors when CPU percentages go below these
// levels. They are const int instead of float because const float in C++ is
// stupid.
const int kCPUMonitoringWarning1 = 80;
const int kCPUMonitoringWarning2 = 50;
#endif