https://git.reactos.org/?p=reactos.git;a=commitdiff;h=36fadc2dca62cc38dc499278e8a3637ec4f4462b

commit 36fadc2dca62cc38dc499278e8a3637ec4f4462b
Author:     Pierre Schweitzer <[email protected]>
AuthorDate: Sat Nov 17 15:36:08 2018 +0100
Commit:     Pierre Schweitzer <[email protected]>
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 ([email protected])
  *                  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);
 }
 
 /*

Reply via email to