[NTOSKRNL] Simplify implementation of ExfAcquireRundownProtectionCacheAware(), ExfReleaseRundownProtectionCacheAware()

This commit is contained in:
Pierre Schweitzer 2018-11-17 15:33:52 +01:00
parent 010b9b5469
commit afb2214154
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B

View file

@ -384,29 +384,10 @@ BOOLEAN
FASTCALL
ExfAcquireRundownProtectionCacheAware(IN PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware)
{
ULONG Value;
BOOLEAN Acquired;
PEX_RUNDOWN_REF RunRef;
RunRef = (PEX_RUNDOWN_REF)((ULONG_PTR)RunRefCacheAware->RunRefs +
RunRefCacheAware->RunRefSize *
(KeGetCurrentProcessorNumber() % RunRefCacheAware->Number));
/* Get current value */
Value = RunRef->Count & !EX_RUNDOWN_ACTIVE;
/* Try to acquire the quick way if already active */
if (ExpChangeRundown(RunRef,
((RunRef->Count & !EX_RUNDOWN_ACTIVE) + EX_RUNDOWN_COUNT_INC),
Value) == Value)
{
Acquired = 1;
}
else
{
Acquired = ExfAcquireRundownProtection(RunRef);
}
return Acquired;
RunRef = ExGetRunRefForCurrentProcessor(RunRefCacheAware);
return _ExAcquireRundownProtection(RunRef);
}
/*
@ -430,27 +411,10 @@ VOID
FASTCALL
ExfReleaseRundownProtectionCacheAware(IN PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware)
{
ULONG Value;
PEX_RUNDOWN_REF RunRef;
RunRef = (PEX_RUNDOWN_REF)((ULONG_PTR)RunRefCacheAware->RunRefs +
RunRefCacheAware->RunRefSize *
(KeGetCurrentProcessorNumber() % RunRefCacheAware->Number));
/* Get current value */
Value = RunRef->Count & !EX_RUNDOWN_ACTIVE;
/* Try to release the quick way if multiple actived */
if (ExpChangeRundown(RunRef,
((RunRef->Count & !EX_RUNDOWN_ACTIVE) - EX_RUNDOWN_COUNT_INC),
Value) == Value)
{
/* Sanity check */
ASSERT((Value >= EX_RUNDOWN_COUNT_INC) || (KeNumberProcessors > 1));
}
else
{
ExfReleaseRundownProtection(RunRef);
}
RunRef = ExGetRunRefForCurrentProcessor(RunRefCacheAware);
return _ExReleaseRundownProtection(RunRef);
}
/*