https://git.reactos.org/?p=reactos.git;a=commitdiff;h=afb2214154886d3717bbb…
commit afb2214154886d3717bbb0c9b7623603262c6e5a
Author: Pierre Schweitzer <pierre(a)reactos.org>
AuthorDate: Sat Nov 17 15:33:52 2018 +0100
Commit: Pierre Schweitzer <pierre(a)reactos.org>
CommitDate: Sat Nov 17 16:44:35 2018 +0100
[NTOSKRNL] Simplify implementation of ExfAcquireRundownProtectionCacheAware(),
ExfReleaseRundownProtectionCacheAware()
---
ntoskrnl/ex/rundown.c | 44 ++++----------------------------------------
1 file changed, 4 insertions(+), 40 deletions(-)
diff --git a/ntoskrnl/ex/rundown.c b/ntoskrnl/ex/rundown.c
index 94a2696286..3b24f5e8be 100644
--- a/ntoskrnl/ex/rundown.c
+++ b/ntoskrnl/ex/rundown.c
@@ -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);
}
/*