27 #include "precompiled.h"
63 regs.
eax = 0x80000007;
89 regs.
eax = 0x80000007;
94 PN_FREQ_ID_CTRL =
BIT(1),
95 PN_HW_THERMAL_CTRL =
BIT(4),
96 PN_SW_THERMAL_CTRL =
BIT(5)
98 if(regs.
edx & (PN_FREQ_ID_CTRL|PN_HW_THERMAL_CTRL|PN_SW_THERMAL_CTRL))
129 virtual const wchar_t*
Name()
const
241 const u8 maxNonTurboRatio =
bits(platformInfo, 8, 15);
242 return double(maxNonTurboRatio) * busFrequency;
double NominalFrequency() const
initial measurement of the tick rate.
double os_cpu_ClockFrequency()
static bool IsUniprocessor()
const AcpiTable * acpi_GetTable(const char *signature)
static bool IsSandyBridge()
const Status NOT_SUPPORTED
double Resolution() const
actual resolution [s].
bool IsC3Supported() const
virtual const wchar_t * Name() const
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
bool cpuid(CpuidRegs *regs)
invoke CPUID instruction.
static bool IsInvariantTSC()
#define BIT(n)
pretty much the same as Bit<unsigned>.
i64 Status
Error handling system.
size_t CounterBits() const
T bits(T num, size_t lo_idx, size_t hi_idx)
extract the value of bits hi_idx:lo_idx within num
ICounter * CreateCounterTSC(void *address, size_t size)
registers used/returned by cpuid
bool IsDutyCycleSupported() const
static bool IsThrottlingPossible()