mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[NTOS:KE] Fix some KAFFINITYs
This commit is contained in:
parent
a175a88fcb
commit
1ee23d33ac
3 changed files with 14 additions and 12 deletions
|
@ -137,7 +137,7 @@ extern LIST_ENTRY KiProcessInSwapListHead, KiProcessOutSwapListHead;
|
||||||
extern LIST_ENTRY KiStackInSwapListHead;
|
extern LIST_ENTRY KiStackInSwapListHead;
|
||||||
extern KEVENT KiSwapEvent;
|
extern KEVENT KiSwapEvent;
|
||||||
extern PKPRCB KiProcessorBlock[];
|
extern PKPRCB KiProcessorBlock[];
|
||||||
extern ULONG_PTR KiIdleSummary;
|
extern KAFFINITY KiIdleSummary;
|
||||||
extern PVOID KeUserApcDispatcher;
|
extern PVOID KeUserApcDispatcher;
|
||||||
extern PVOID KeUserCallbackDispatcher;
|
extern PVOID KeUserCallbackDispatcher;
|
||||||
extern PVOID KeUserExceptionDispatcher;
|
extern PVOID KeUserExceptionDispatcher;
|
||||||
|
@ -379,7 +379,7 @@ UCHAR
|
||||||
NTAPI
|
NTAPI
|
||||||
KeFindNextRightSetAffinity(
|
KeFindNextRightSetAffinity(
|
||||||
IN UCHAR Number,
|
IN UCHAR Number,
|
||||||
IN ULONG Set
|
IN KAFFINITY Set
|
||||||
);
|
);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -20,9 +20,10 @@ extern LIST_ENTRY PspReaperListHead;
|
||||||
UCHAR
|
UCHAR
|
||||||
NTAPI
|
NTAPI
|
||||||
KeFindNextRightSetAffinity(IN UCHAR Number,
|
KeFindNextRightSetAffinity(IN UCHAR Number,
|
||||||
IN ULONG Set)
|
IN KAFFINITY Set)
|
||||||
{
|
{
|
||||||
ULONG Bit, Result;
|
KAFFINITY Bit;
|
||||||
|
ULONG Result;
|
||||||
ASSERT(Set != 0);
|
ASSERT(Set != 0);
|
||||||
|
|
||||||
/* Calculate the mask */
|
/* Calculate the mask */
|
||||||
|
@ -32,7 +33,7 @@ KeFindNextRightSetAffinity(IN UCHAR Number,
|
||||||
if (!Bit) Bit = Set;
|
if (!Bit) Bit = Set;
|
||||||
|
|
||||||
/* Now find the right set and return it */
|
/* Now find the right set and return it */
|
||||||
BitScanReverse(&Result, Bit);
|
BitScanReverseAffinity(&Result, Bit);
|
||||||
return (UCHAR)Result;
|
return (UCHAR)Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,7 +492,7 @@ KeStartThread(IN OUT PKTHREAD Thread)
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
PKNODE Node;
|
PKNODE Node;
|
||||||
PKPRCB NodePrcb;
|
PKPRCB NodePrcb;
|
||||||
ULONG Set, Mask;
|
KAFFINITY Set, Mask;
|
||||||
#endif
|
#endif
|
||||||
UCHAR IdealProcessor = 0;
|
UCHAR IdealProcessor = 0;
|
||||||
PKPROCESS Process = Thread->ApcState.Process;
|
PKPROCESS Process = Thread->ApcState.Process;
|
||||||
|
@ -526,7 +527,7 @@ KeStartThread(IN OUT PKTHREAD Thread)
|
||||||
#else
|
#else
|
||||||
Set = ~NodePrcb->MultiThreadProcessorSet;
|
Set = ~NodePrcb->MultiThreadProcessorSet;
|
||||||
#endif
|
#endif
|
||||||
Mask = (ULONG)(Node->ProcessorMask & Process->Affinity);
|
Mask = Node->ProcessorMask & Process->Affinity;
|
||||||
Set &= Mask;
|
Set &= Mask;
|
||||||
if (Set) Mask = Set;
|
if (Set) Mask = Set;
|
||||||
|
|
||||||
|
@ -1122,7 +1123,8 @@ KeSetSystemAffinityThread(IN KAFFINITY Affinity)
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
if (!(Affinity & AFFINITY_MASK(CurrentThread->IdealProcessor)))
|
if (!(Affinity & AFFINITY_MASK(CurrentThread->IdealProcessor)))
|
||||||
{
|
{
|
||||||
ULONG AffinitySet, NodeMask;
|
KAFFINITY AffinitySet, NodeMask;
|
||||||
|
ULONG IdealProcessor;
|
||||||
|
|
||||||
/* It's not! Get the PRCB */
|
/* It's not! Get the PRCB */
|
||||||
Prcb = KiProcessorBlock[CurrentThread->IdealProcessor];
|
Prcb = KiProcessorBlock[CurrentThread->IdealProcessor];
|
||||||
|
@ -1137,8 +1139,8 @@ KeSetSystemAffinityThread(IN KAFFINITY Affinity)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate the ideal CPU from the affinity set */
|
/* Calculate the ideal CPU from the affinity set */
|
||||||
BitScanReverse(&NodeMask, AffinitySet);
|
BitScanReverseAffinity(&IdealProcessor, AffinitySet);
|
||||||
CurrentThread->IdealProcessor = (UCHAR)NodeMask;
|
CurrentThread->IdealProcessor = (UCHAR)IdealProcessor;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,8 @@
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
ULONG_PTR KiIdleSummary;
|
KAFFINITY KiIdleSummary;
|
||||||
ULONG_PTR KiIdleSMTSummary;
|
KAFFINITY KiIdleSMTSummary;
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue