Use KeGetCurrentPrcb instead of KeGetCurrentKPCR. Modified: trunk/reactos/ntoskrnl/ke/device.c Modified: trunk/reactos/ntoskrnl/ke/wait.c Modified: trunk/reactos/ntoskrnl/ps/thread.c _____
Modified: trunk/reactos/ntoskrnl/ke/device.c --- trunk/reactos/ntoskrnl/ke/device.c 2005-03-13 09:14:59 UTC (rev 14000) +++ trunk/reactos/ntoskrnl/ke/device.c 2005-03-13 09:19:33 UTC (rev 14001) @@ -57,17 +57,17 @@
{ KIRQL OldIrql; PKPROCESS Process = NULL; - PKPCR Pcr = NULL; + PKPRCB Prcb = NULL; /* Raise the IRQL for the TB Flush */ OldIrql = KeRaiseIrqlToSynchLevel(); /* All CPUs need to have the TB flushed. */ if (CurrentCpuOnly == FALSE) { - Pcr = KeGetCurrentKPCR(); - + Prcb = KeGetCurrentPrcb(); + /* How many CPUs is our caller using? */ - Process = Pcr->PrcbData.CurrentThread->ApcState.Process; + Process = Prcb->CurrentThread->ApcState.Process; /* More then one, so send an IPI */ if (Process->ActiveProcessors > 1) { @@ -83,7 +83,7 @@ /* Did we send an IPI? If so, wait for completion */ if (Process->ActiveProcessors > 1) { do { - } while (Pcr->PrcbData.TargetSet != 0); + } while (Prcb->TargetSet != 0); } } _____
Modified: trunk/reactos/ntoskrnl/ke/wait.c --- trunk/reactos/ntoskrnl/ke/wait.c 2005-03-13 09:14:59 UTC (rev 14000) +++ trunk/reactos/ntoskrnl/ke/wait.c 2005-03-13 09:19:33 UTC (rev 14001) @@ -81,7 +81,7 @@
if (!KeIsExecutingDpc() && OldIrql < DISPATCH_LEVEL && KeGetCurrentThread() != NULL && - KeGetCurrentThread() == KeGetCurrentKPCR()->PrcbData.IdleThread) + KeGetCurrentThread() == KeGetCurrentPrcb()->IdleThread) { PsDispatchThreadNoLock(THREAD_STATE_READY); KeLowerIrql(OldIrql); _____
Modified: trunk/reactos/ntoskrnl/ps/thread.c --- trunk/reactos/ntoskrnl/ps/thread.c 2005-03-13 09:14:59 UTC (rev 14000) +++ trunk/reactos/ntoskrnl/ps/thread.c 2005-03-13 09:19:33 UTC (rev 14001) @@ -63,11 +63,11 @@
PKTHREAD Thread; Ke386SaveFlags(Flags); Ke386DisableInterrupts(); - Thread = KeGetCurrentKPCR()->PrcbData.CurrentThread; + Thread = KeGetCurrentPrcb()->CurrentThread; Ke386RestoreFlags(Flags); return Thread; #else - return(KeGetCurrentKPCR()->PrcbData.CurrentThread); + return(KeGetCurrentPrcb()->CurrentThread); #endif }
@@ -437,7 +437,7 @@
OldThread = CurrentThread; CurrentThread = Candidate; - IdleThread = KeGetCurrentKPCR()->PrcbData.IdleThread; + IdleThread = KeGetCurrentPrcb()->IdleThread;
if (&OldThread->Tcb == IdleThread) { @@ -464,7 +464,7 @@ { KIRQL oldIrql;
- if (!DoneInitYet || KeGetCurrentKPCR()->PrcbData.IdleThread == NULL) + if (!DoneInitYet || KeGetCurrentPrcb()->IdleThread == NULL) { return; } @@ -777,7 +777,7 @@ FirstThread->Tcb.FreezeCount = 0; FirstThread->Tcb.UserAffinity = (1 << 0); /* Set the affinity of the first thread to the boot processor */ FirstThread->Tcb.Affinity = (1 << 0); - KeGetCurrentKPCR()->PrcbData.CurrentThread = (PVOID)FirstThread; + KeGetCurrentPrcb()->CurrentThread = (PVOID)FirstThread; NtClose(FirstThreadHandle);
DPRINT("FirstThread %x\n",FirstThread);