HalpTimerRegisterBuiltinPlugins
NTSTATUS __stdcall HalpTimerRegisterBuiltinPlugins(INT64 a1){
NTSTATUS result;
INT64 v2;
_MI_PARTITION *v3;
_TIMER_INITIALIZATION_BLOCK NewTimer;
CHAR v5;
if( (_DWORD)a1 )
{
if( (_DWORD)a1 == 1 )
{
HalpPmTimerDiscover();
if( result >= 0 )
{
HalpRtcDiscover();
if( result >= 0 )
{
result = HalpHpetDiscover();
if( result >= 0 )
{
result = HalpApicTimerDiscover();
if( result >= 0 )
{
result = HalpSfiTimerDiscover();
if( result >= 0 )
{
v5 = 1;
if( HalSocRequestConfigurationData(2i64, v2, &v5) >= 0 && v5 )
{
memset(&NewTimer, 0i64, sizeof(NewTimer));
NewTimer.Interrupt.LegacyIrq = 0;
NewTimer.Interrupt.Polarity = InterruptPolarityUnknown;
NewTimer.FunctionTable.Initialize = (PLONG)HalSystemVectorDispatchEntry;
NewTimer.Header.TableVersion = 1;
NewTimer.FunctionTable.ArmTimer = (PLONG)Halp8254TimerArm;
NewTimer.FunctionTable.AcknowledgeInterrupt = xHalTimerWatchdogStop;
NewTimer.FunctionTable.Stop = xHalTimerWatchdogStop;
NewTimer.Header.TableSize = 144;
NewTimer.CounterBitWidth = 16;
NewTimer.CounterFrequency = 1193182i64;
NewTimer.KnownType = Timer8254;
NewTimer.Capabilities = 320;
HalpTimerRegister(&NewTimer, 0i64);
}
result = HalpArtDiscover(v3);
if( result >= 0 )
return HalpHvWatchdogDiscover();
}
}
}
}
}
}
else
{
return 0;
}
}
else
{
HalpTscDiscover();
}
return result;
}Referenced by:
HalpTimerRegisterBuiltinPluginsCommon