[NTOS:KE] Fix some KAFFINITYs

This commit is contained in:
Timo Kreuzer
2024-01-16 08:15:53 +01:00
parent a175a88fcb
commit 1ee23d33ac
3 changed files with 14 additions and 12 deletions
+2 -2
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
+10 -8
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
+2 -2
View File
@@ -22,8 +22,8 @@
/* GLOBALS *******************************************************************/
ULONG_PTR KiIdleSummary;
ULONG_PTR KiIdleSMTSummary;
KAFFINITY KiIdleSummary;
KAFFINITY KiIdleSMTSummary;
/* FUNCTIONS *****************************************************************/