20#define SAMPLE_FREQUENCY 1024
76 SumXX = (XMax * (XMax + 1) * (2 * XMax + 1)) / 6;
79 for (SumXY = 0,
X = 1;
X <= XMax;
X++)
81 SumXY +=
X * (ArrayY[
X] - ArrayY[0]);
88 return (SumXY + (SumXX / 2)) / SumXX;
97 PVOID PreviousHandler;
144 KeGetPcr()->StallScaleFactor = (
ULONG)(CpuClockFrequency / 1000000);
DECLSPEC_NORETURN VOID NTAPI KeBugCheck(ULONG BugCheckCode)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
BOOLEAN NTAPI HalEnableSystemInterrupt(IN ULONG Vector, IN KIRQL Irql, IN KINTERRUPT_MODE InterruptMode)
VOID NTAPI HalDisableSystemInterrupt(IN ULONG Vector, IN KIRQL Irql)
ULONG64 TscCalibrationArray[NUM_SAMPLES]
VOID __cdecl HalpTscCalibrationISR(VOID)
static ULONG64 HalpDoLinearRegression(_In_ ULONG XMax, _In_reads_(XMax+1) const ULONG64 *ArrayY)
static VOID HalpPrepareStallExecution(VOID)
VOID NTAPI HalpCalibrateStallExecution(VOID)
volatile ULONG TscCalibrationPhase
#define PRIMARY_VECTOR_BASE
#define TIMER_CONTROL_PORT
#define TIMER_CHANNEL0_DATA_PORT
PPC_QUAL unsigned char __inbyte(const unsigned long Port)
PPC_QUAL void __outbyte(unsigned long const Port, const unsigned char Data)
__INTRIN_INLINE void __writeeflags(uintptr_t Value)
__INTRIN_INLINE uintptr_t __readeflags(void)
#define KeStallExecutionProcessor(MicroSeconds)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
FORCEINLINE PVOID KeQueryInterruptHandler(IN ULONG Vector)
FORCEINLINE VOID KeSweepICache(IN PVOID BaseAddress, IN SIZE_T FlushSize)
FORCEINLINE VOID KeRegisterInterruptHandler(IN ULONG Vector, IN PVOID Handler)
#define TIMER_FREQUENCY_1
#define TIMER_FREQUENCY_2
void __cdecl _disable(void)
void __cdecl _enable(void)
_Must_inspect_result_ _In_ ULONG Flags
_In_ LARGE_INTEGER _In_ ULONG Period