[NTOS:KE] Fix some KAFFINITYs

This commit is contained in:
Timo Kreuzer 2023-12-23 11:19:28 +02:00
parent a175a88fcb
commit 1ee23d33ac
3 changed files with 14 additions and 12 deletions

View file

@ -137,7 +137,7 @@ extern LIST_ENTRY KiProcessInSwapListHead, KiProcessOutSwapListHead;
extern LIST_ENTRY KiStackInSwapListHead;
extern KEVENT KiSwapEvent;
extern PKPRCB KiProcessorBlock[];
extern ULONG_PTR KiIdleSummary;
extern KAFFINITY KiIdleSummary;
extern PVOID KeUserApcDispatcher;
extern PVOID KeUserCallbackDispatcher;
extern PVOID KeUserExceptionDispatcher;
@ -379,7 +379,7 @@ UCHAR
NTAPI
KeFindNextRightSetAffinity(
IN UCHAR Number,
IN ULONG Set
IN KAFFINITY Set
);
VOID

View file

@ -20,9 +20,10 @@ extern LIST_ENTRY PspReaperListHead;
UCHAR
NTAPI
KeFindNextRightSetAffinity(IN UCHAR Number,
IN ULONG Set)
IN KAFFINITY Set)
{
ULONG Bit, Result;
KAFFINITY Bit;
ULONG Result;
ASSERT(Set != 0);
/* Calculate the mask */
@ -32,7 +33,7 @@ KeFindNextRightSetAffinity(IN UCHAR Number,
if (!Bit) Bit = Set;
/* Now find the right set and return it */
BitScanReverse(&Result, Bit);
BitScanReverseAffinity(&Result, Bit);
return (UCHAR)Result;
}
@ -491,7 +492,7 @@ KeStartThread(IN OUT PKTHREAD Thread)
#ifdef CONFIG_SMP
PKNODE Node;
PKPRCB NodePrcb;
ULONG Set, Mask;
KAFFINITY Set, Mask;
#endif
UCHAR IdealProcessor = 0;
PKPROCESS Process = Thread->ApcState.Process;
@ -526,7 +527,7 @@ KeStartThread(IN OUT PKTHREAD Thread)
#else
Set = ~NodePrcb->MultiThreadProcessorSet;
#endif
Mask = (ULONG)(Node->ProcessorMask & Process->Affinity);
Mask = Node->ProcessorMask & Process->Affinity;
Set &= Mask;
if (Set) Mask = Set;
@ -1122,7 +1123,8 @@ KeSetSystemAffinityThread(IN KAFFINITY Affinity)
#ifdef CONFIG_SMP
if (!(Affinity & AFFINITY_MASK(CurrentThread->IdealProcessor)))
{
ULONG AffinitySet, NodeMask;
KAFFINITY AffinitySet, NodeMask;
ULONG IdealProcessor;
/* It's not! Get the PRCB */
Prcb = KiProcessorBlock[CurrentThread->IdealProcessor];
@ -1137,8 +1139,8 @@ KeSetSystemAffinityThread(IN KAFFINITY Affinity)
}
/* Calculate the ideal CPU from the affinity set */
BitScanReverse(&NodeMask, AffinitySet);
CurrentThread->IdealProcessor = (UCHAR)NodeMask;
BitScanReverseAffinity(&IdealProcessor, AffinitySet);
CurrentThread->IdealProcessor = (UCHAR)IdealProcessor;
}
#endif

View file

@ -22,8 +22,8 @@
/* GLOBALS *******************************************************************/
ULONG_PTR KiIdleSummary;
ULONG_PTR KiIdleSMTSummary;
KAFFINITY KiIdleSummary;
KAFFINITY KiIdleSMTSummary;
/* FUNCTIONS *****************************************************************/