Zebediah Figura : ntoskrnl.exe: Implement plain queued spinlock functions on top of DPC-level ones.

Alexandre Julliard julliard at winehq.org
Tue Jan 29 15:18:16 CST 2019


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Mon Jan 28 19:21:13 2019 -0600

ntoskrnl.exe: Implement plain queued spinlock functions on top of DPC-level ones.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/ntoskrnl.c        | 27 ---------------------------
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec |  4 ++--
 dlls/ntoskrnl.exe/sync.c            | 18 ++++++++++++++++++
 3 files changed, 20 insertions(+), 29 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index ec78f4b..9ee7543 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3765,33 +3765,6 @@ NTSTATUS WINAPI IoCreateFile(HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBUT
 }
 
 /***********************************************************************
- *           KeAcquireInStackQueuedSpinLock (NTOSKRNL.EXE.@)
- */
-#ifdef DEFINE_FASTCALL2_ENTRYPOINT
-DEFINE_FASTCALL2_ENTRYPOINT( KeAcquireInStackQueuedSpinLock )
-void WINAPI DECLSPEC_HIDDEN __regs_KeAcquireInStackQueuedSpinLock( KSPIN_LOCK *spinlock,
-                                                                   KLOCK_QUEUE_HANDLE *handle )
-#else
-void WINAPI KeAcquireInStackQueuedSpinLock( KSPIN_LOCK *spinlock, KLOCK_QUEUE_HANDLE *handle )
-#endif
-{
-    FIXME( "stub: %p %p\n", spinlock, handle );
-}
-
-/***********************************************************************
- *           KeReleaseInStackQueuedSpinLock (NTOSKRNL.EXE.@)
- */
-#ifdef DEFINE_FASTCALL1_ENTRYPOINT
-DEFINE_FASTCALL1_ENTRYPOINT( KeReleaseInStackQueuedSpinLock )
-void WINAPI DECLSPEC_HIDDEN __regs_KeReleaseInStackQueuedSpinLock( KLOCK_QUEUE_HANDLE *handle )
-#else
-void WINAPI KeReleaseInStackQueuedSpinLock( KLOCK_QUEUE_HANDLE *handle )
-#endif
-{
-    FIXME( "stub: %p\n", handle );
-}
-
-/***********************************************************************
  *           IoCreateNotificationEvent (NTOSKRNL.EXE.@)
  */
 PKEVENT WINAPI IoCreateNotificationEvent(UNICODE_STRING *name, HANDLE *handle)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 7bda160..3f57f7d 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -41,9 +41,9 @@
 @ stub IoWritePartitionTable
 @ stdcall -norelay IofCallDriver(ptr ptr)
 @ stdcall -norelay IofCompleteRequest(ptr long)
-@ stdcall -norelay KeAcquireInStackQueuedSpinLock(ptr ptr)
+@ stdcall -arch=arm,arm64,x86_64 KeAcquireInStackQueuedSpinLock(ptr ptr)
 @ stdcall -norelay KeAcquireInStackQueuedSpinLockAtDpcLevel(ptr ptr)
-@ stdcall -norelay KeReleaseInStackQueuedSpinLock(ptr)
+@ stdcall -arch=arm,arm64,x86_64 KeReleaseInStackQueuedSpinLock(ptr)
 @ stdcall -norelay KeReleaseInStackQueuedSpinLockFromDpcLevel(ptr)
 @ stub KeSetTimeUpdateNotifyRoutine
 @ stub KefAcquireSpinLockAtDpcLevel
diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c
index 4dc1fc3..46ffc581 100644
--- a/dlls/ntoskrnl.exe/sync.c
+++ b/dlls/ntoskrnl.exe/sync.c
@@ -498,6 +498,24 @@ KIRQL WINAPI KeAcquireSpinLockRaiseToDpc( KSPIN_LOCK *lock )
     KeAcquireSpinLockAtDpcLevel( lock );
     return 0;
 }
+
+/***********************************************************************
+ *           KeAcquireInStackQueuedSpinLock (NTOSKRNL.EXE.@)
+ */
+void WINAPI KeAcquireInStackQueuedSpinLock( KSPIN_LOCK *lock, KLOCK_QUEUE_HANDLE *queue )
+{
+    TRACE("lock %p, queue %p.\n", lock, queue);
+    KeAcquireInStackQueuedSpinLockAtDpcLevel( lock, queue );
+}
+
+/***********************************************************************
+ *           KeReleaseInStackQueuedSpinLock (NTOSKRNL.EXE.@)
+ */
+void WINAPI KeReleaseInStackQueuedSpinLock( KLOCK_QUEUE_HANDLE *queue )
+{
+    TRACE("queue %p.\n", queue);
+    KeReleaseInStackQueuedSpinLockFromDpcLevel( queue );
+}
 #endif
 
 static KSPIN_LOCK cancel_lock;




More information about the wine-cvs mailing list