Expose installed CPU count and rename state save function
This commit is contained in:
@@ -26,12 +26,13 @@ namespace KE
|
|||||||
STATIC XTAPI PKPROCESSOR_CONTROL_BLOCK GetCurrentProcessorControlBlock(VOID);
|
STATIC XTAPI PKPROCESSOR_CONTROL_BLOCK GetCurrentProcessorControlBlock(VOID);
|
||||||
STATIC XTAPI ULONG GetCurrentProcessorNumber(VOID);
|
STATIC XTAPI ULONG GetCurrentProcessorNumber(VOID);
|
||||||
STATIC XTAPI PKTHREAD GetCurrentThread(VOID);
|
STATIC XTAPI PKTHREAD GetCurrentThread(VOID);
|
||||||
|
STATIC XTAPI ULONG GetInstalledCpus(VOID);
|
||||||
STATIC XTAPI PKPROCESSOR_BLOCK GetProcessorBlock(IN ULONG CpuNumber);
|
STATIC XTAPI PKPROCESSOR_BLOCK GetProcessorBlock(IN ULONG CpuNumber);
|
||||||
STATIC XTAPI XTSTATUS InitializeProcessorBlocks();
|
STATIC XTAPI XTSTATUS InitializeProcessorBlocks();
|
||||||
STATIC XTAPI VOID RegisterHardwareId(IN ULONG HardwareId);
|
STATIC XTAPI VOID RegisterHardwareId(IN ULONG HardwareId);
|
||||||
STATIC XTAPI VOID RegisterProcessorBlock(ULONG CpuNumber,
|
STATIC XTAPI VOID RegisterProcessorBlock(ULONG CpuNumber,
|
||||||
PKPROCESSOR_BLOCK ProcessorBlock);
|
PKPROCESSOR_BLOCK ProcessorBlock);
|
||||||
STATIC XTAPI VOID SaveProcessorState(OUT PKPROCESSOR_STATE CpuState);
|
STATIC XTAPI VOID SaveProcessorControlState(OUT PKPROCESSOR_STATE CpuState);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -66,6 +66,21 @@ KE::Processor::GetCurrentThread(VOID)
|
|||||||
return (PKTHREAD)AR::CpuFunctions::ReadGSQuadWord(FIELD_OFFSET(KPROCESSOR_BLOCK, Prcb.CurrentThread));
|
return (PKTHREAD)AR::CpuFunctions::ReadGSQuadWord(FIELD_OFFSET(KPROCESSOR_BLOCK, Prcb.CurrentThread));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the number of installed and enabled CPUs in the system.
|
||||||
|
*
|
||||||
|
* @return This routine returns the number of installed CPUs in the system.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
ULONG
|
||||||
|
KE::Processor::GetInstalledCpus(VOID)
|
||||||
|
{
|
||||||
|
/* Return number of installed CPUs */
|
||||||
|
return InstalledCpus;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the processor block for the specified processor number.
|
* Gets the processor block for the specified processor number.
|
||||||
*
|
*
|
||||||
@@ -189,7 +204,7 @@ KE::Processor::RegisterProcessorBlock(ULONG CpuNumber,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
KE::Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState)
|
KE::Processor::SaveProcessorControlState(OUT PKPROCESSOR_STATE CpuState)
|
||||||
{
|
{
|
||||||
/* Save CR registers */
|
/* Save CR registers */
|
||||||
CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0);
|
CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0);
|
||||||
|
|||||||
@@ -66,6 +66,21 @@ KE::Processor::GetCurrentThread(VOID)
|
|||||||
return (PKTHREAD)AR::CpuFunctions::ReadFSDualWord(FIELD_OFFSET(KPROCESSOR_BLOCK, Prcb.CurrentThread));
|
return (PKTHREAD)AR::CpuFunctions::ReadFSDualWord(FIELD_OFFSET(KPROCESSOR_BLOCK, Prcb.CurrentThread));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the number of installed and enabled CPUs in the system.
|
||||||
|
*
|
||||||
|
* @return This routine returns the number of installed CPUs in the system.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
ULONG
|
||||||
|
KE::Processor::GetInstalledCpus(VOID)
|
||||||
|
{
|
||||||
|
/* Return number of installed CPUs */
|
||||||
|
return InstalledCpus;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the processor block for the specified processor number.
|
* Gets the processor block for the specified processor number.
|
||||||
*
|
*
|
||||||
@@ -189,7 +204,7 @@ KE::Processor::RegisterProcessorBlock(ULONG CpuNumber,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
KE::Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState)
|
KE::Processor::SaveProcessorControlState(OUT PKPROCESSOR_STATE CpuState)
|
||||||
{
|
{
|
||||||
/* Save CR registers */
|
/* Save CR registers */
|
||||||
CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0);
|
CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0);
|
||||||
|
|||||||
Reference in New Issue
Block a user