Module: wine Branch: master Commit: 10dcc10a5527ec6f143ba9618c8712b09601f255 URL: https://source.winehq.org/git/wine.git/?a=commit;h=10dcc10a5527ec6f143ba9618...
Author: Zebediah Figura z.figura12@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@gmail.com Signed-off-by: Alexandre Julliard julliard@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;