Jacek Caban : ntoskrnl.exe: Implement ExAcquireFastMutex and ExReleaseFastMutex.

Alexandre Julliard julliard at winehq.org
Thu May 16 16:26:59 CDT 2019


Module: wine
Branch: master
Commit: ed140a7ac5a57d8b64d2cf3afba3610b8c10698b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ed140a7ac5a57d8b64d2cf3afba3610b8c10698b

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu May 16 20:18:58 2019 +0200

ntoskrnl.exe: Implement ExAcquireFastMutex and ExReleaseFastMutex.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47044
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/ntoskrnl.exe.spec |  2 ++
 dlls/ntoskrnl.exe/sync.c            | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index af43b2a..87ec397 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -1,3 +1,4 @@
+@ stdcall -arch=arm,arm64,x86_64 ExAcquireFastMutex(ptr)
 @ stdcall -fastcall ExAcquireFastMutexUnsafe(ptr)
 @ stub ExAcquireRundownProtection
 @ stub ExAcquireRundownProtectionEx
@@ -8,6 +9,7 @@
 @ stdcall -fastcall -arch=i386 ExInterlockedPopEntrySList(ptr ptr) NTOSKRNL_ExInterlockedPopEntrySList
 @ stdcall -fastcall -arch=i386 ExInterlockedPushEntrySList (ptr ptr ptr) NTOSKRNL_ExInterlockedPushEntrySList
 @ stub ExReInitializeRundownProtection
+@ stdcall -arch=arm,arm64,x86_64 ExReleaseFastMutex(ptr)
 @ stdcall -fastcall ExReleaseFastMutexUnsafe(ptr)
 @ stdcall -fastcall ExReleaseResourceLite(ptr)
 @ stub ExReleaseRundownProtection
diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c
index a99c81c..07673f1 100644
--- a/dlls/ntoskrnl.exe/sync.c
+++ b/dlls/ntoskrnl.exe/sync.c
@@ -732,6 +732,28 @@ void FASTCALL ExReleaseFastMutexUnsafe( FAST_MUTEX *mutex )
         KeSetEvent( &mutex->Event, IO_NO_INCREMENT, FALSE );
 }
 
+#ifndef __i386__
+
+/***********************************************************************
+ *           ExAcquireFastMutex    (NTOSKRNL.@)
+ */
+void WINAPI ExAcquireFastMutex( FAST_MUTEX *mutex )
+{
+    /* FIXME: lower IRQL */
+    ExAcquireFastMutexUnsafe( mutex );
+}
+
+/***********************************************************************
+ *           ExReleaseFastMutex    (NTOSKRNL.@)
+ */
+void WINAPI ExReleaseFastMutex( FAST_MUTEX *mutex )
+{
+    ExReleaseFastMutexUnsafe( mutex );
+    /* FIXME: restore IRQL */
+}
+
+#endif /* __i386__ */
+
 /* Use of the fields of an ERESOURCE structure seems to vary wildly between
  * Windows versions. The below implementation uses them as follows:
  *




More information about the wine-cvs mailing list