https://git.reactos.org/?p=reactos.git;a=commitdiff;h=36fadc2dca62cc38dc499…
commit 36fadc2dca62cc38dc499278e8a3637ec4f4462b
Author: Pierre Schweitzer <pierre(a)reactos.org>
AuthorDate: Sat Nov 17 15:36:08 2018 +0100
Commit: Pierre Schweitzer <pierre(a)reactos.org>
CommitDate: Sat Nov 17 16:44:35 2018 +0100
[NTOSKRNL] Implement ExfAcquireRundownProtectionCacheAwareEx(),
ExfReleaseRundownProtectionCacheAwareEx()
---
ntoskrnl/ex/rundown.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/ntoskrnl/ex/rundown.c b/ntoskrnl/ex/rundown.c
index 3b24f5e8be..da96b08af9 100644
--- a/ntoskrnl/ex/rundown.c
+++ b/ntoskrnl/ex/rundown.c
@@ -5,6 +5,7 @@
* PURPOSE: Rundown and Cache-Aware Rundown Protection
* PROGRAMMERS: Alex Ionescu (alex(a)relsoft.net)
* Thomas Weidenmueller
+ * Pierre Schweitzer
*/
/* INCLUDES *****************************************************************/
@@ -391,17 +392,17 @@ ExfAcquireRundownProtectionCacheAware(IN PEX_RUNDOWN_REF_CACHE_AWARE
RunRefCache
}
/*
- * @unimplemented NT5.2
+ * @implemented NT5.2
*/
BOOLEAN
FASTCALL
ExfAcquireRundownProtectionCacheAwareEx(IN PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware,
IN ULONG Count)
{
- DBG_UNREFERENCED_PARAMETER(RunRefCacheAware);
- DBG_UNREFERENCED_PARAMETER(Count);
- UNIMPLEMENTED;
- return FALSE;
+ PEX_RUNDOWN_REF RunRef;
+
+ RunRef = ExGetRunRefForCurrentProcessor(RunRefCacheAware);
+ return ExfAcquireRundownProtectionEx(RunRef, Count);
}
/*
@@ -418,16 +419,17 @@ ExfReleaseRundownProtectionCacheAware(IN PEX_RUNDOWN_REF_CACHE_AWARE
RunRefCache
}
/*
- * @unimplemented NT5.2
+ * @implemented NT5.2
*/
VOID
FASTCALL
ExfReleaseRundownProtectionCacheAwareEx(IN PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware,
IN ULONG Count)
{
- DBG_UNREFERENCED_PARAMETER(RunRefCacheAware);
- DBG_UNREFERENCED_PARAMETER(Count);
- UNIMPLEMENTED;
+ PEX_RUNDOWN_REF RunRef;
+
+ RunRef = ExGetRunRefForCurrentProcessor(RunRefCacheAware);
+ return ExfReleaseRundownProtectionEx(RunRef, Count);
}
/*