Author: ros-arm-bringup
Date: Tue Jul 22 00:37:01 2008
New Revision: 34656
URL:
http://svn.reactos.org/svn/reactos?rev=34656&view=rev
Log:
- Not only did r34637 break the ARM build, it also doesn't make sense on x86 (or
other) builds, because it assumes invalid data layout. For example, on x64 builds, the
code would read random data.
- In the future, please refer to other code which loops the current processors and gets
their KPRCB before attempting a half-assed implementation. KiProcessorBlock should be
used.
Modified:
trunk/reactos/ntoskrnl/ex/sysinfo.c
Modified: trunk/reactos/ntoskrnl/ex/sysinfo.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/sysinfo.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ex/sysinfo.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/ex/sysinfo.c [iso-8859-1] Tue Jul 22 00:37:01 2008
@@ -1180,7 +1180,7 @@
QSI_DEF(SystemInterruptInformation)
{
PKPRCB Prcb;
- PKIPCR Pcr;
+ PKPCR Pcr;
LONG i;
ULONG ti;
PSYSTEM_INTERRUPT_INFORMATION sii = (PSYSTEM_INTERRUPT_INFORMATION)Buffer;
@@ -1192,10 +1192,10 @@
ti = KeQueryTimeIncrement();
- Prcb = KeGetPcr()->Prcb;
for (i = 0; i < KeNumberProcessors; i++)
{
- Pcr = CONTAINING_RECORD(Prcb, KIPCR, Prcb);
+ Prcb = KiProcessorBlock[i];
+ Pcr = CONTAINING_RECORD(Prcb, KPCR, Prcb);
sii->ContextSwitches = Pcr->ContextSwitches;
sii->DpcCount = Prcb->DpcData[0].DpcCount;
sii->DpcRate = Prcb->DpcRequestRate;
@@ -1203,7 +1203,6 @@
sii->DpcBypassCount = 0;
sii->ApcBypassCount = 0;
sii++;
- Prcb = (PKPRCB)((ULONG_PTR)Prcb + PAGE_SIZE);
}
return STATUS_SUCCESS;