Module: wine Branch: master Commit: ed140a7ac5a57d8b64d2cf3afba3610b8c10698b URL: https://source.winehq.org/git/wine.git/?a=commit;h=ed140a7ac5a57d8b64d2cf3af...
Author: Jacek Caban jacek@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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: *