[PATCH 2/3] ntoskrnl.exe: Implement plain queued spinlock functions on top of DPC-level ones.
Zebediah Figura
z.figura12 at gmail.com
Mon Jan 28 19:21:13 CST 2019
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
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 5c2055ad25..20bd401489 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3769,33 +3769,6 @@ NTSTATUS WINAPI IoCreateFile(HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBUT
return STATUS_NOT_IMPLEMENTED;
}
-/***********************************************************************
- * 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.@)
*/
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 3ee0e1f808..4b99755ae1 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 4dc1fc3511..46ffc581f0 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;
--
2.20.1
More information about the wine-devel
mailing list