mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Added patch to implement stubs for Ke{Aquire,Release}InStackQueuedSpinLock functions.
This commit is contained in:
parent
c97e444da2
commit
734b40739a
@ -0,0 +1,99 @@
|
||||
From d41ae9a2e8182b9a57a9b110905a4ffb0dd81e8f Mon Sep 17 00:00:00 2001
|
||||
From: Austin English <austinenglish@gmail.com>
|
||||
Date: Thu, 9 Feb 2017 16:51:25 -0600
|
||||
Subject: ntoskrnl.exe: add KeAcquireInStackQueuedSpinLock stub (try 2)
|
||||
|
||||
Signed-off-by: Austin English <austinenglish@gmail.com>
|
||||
---
|
||||
dlls/hal/hal.spec | 2 +-
|
||||
dlls/ntoskrnl.exe/ntoskrnl.c | 13 +++++++++++++
|
||||
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 1 +
|
||||
include/ddk/wdm.h | 10 ++++++++++
|
||||
tools/make_specfiles | 4 ++++
|
||||
5 files changed, 29 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/hal/hal.spec b/dlls/hal/hal.spec
|
||||
index bd6bc35736a..f441ac5271f 100644
|
||||
--- a/dlls/hal/hal.spec
|
||||
+++ b/dlls/hal/hal.spec
|
||||
@@ -4,7 +4,7 @@
|
||||
@ stub HalClearSoftwareInterrupt
|
||||
@ stub HalRequestSoftwareInterrupt
|
||||
@ stub HalSystemVectorDispatchEntry
|
||||
-@ stub KeAcquireInStackQueuedSpinLock
|
||||
+@ stdcall -norelay KeAcquireInStackQueuedSpinLock(ptr ptr) ntoskrnl.exe.KeAcquireInStackQueuedSpinLock
|
||||
@ stub KeAcquireInStackQueuedSpinLockRaiseToSynch
|
||||
@ stub KeAcquireQueuedSpinLock
|
||||
@ stub KeAcquireQueuedSpinLockRaiseToSynch
|
||||
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
|
||||
index 06320d03cc9..b8f6a25714a 100644
|
||||
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
|
||||
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
|
||||
@@ -3188,3 +3188,16 @@ VOID WINAPI KeClearEvent(PRKEVENT event)
|
||||
{
|
||||
FIXME("stub: %p\n", event);
|
||||
}
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * KeAcquireInStackQueuedSpinLock (NTOSKRNL.EXE.@)
|
||||
+ */
|
||||
+#ifdef DEFINE_FASTCALL2_ENTRYPOINT
|
||||
+DEFINE_FASTCALL2_ENTRYPOINT( KeAcquireInStackQueuedSpinLock )
|
||||
+void WINAPI __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);
|
||||
+}
|
||||
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
|
||||
index 62c7fb496cf..ba18200c503 100644
|
||||
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
|
||||
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
|
||||
@@ -41,6 +41,7 @@
|
||||
@ stub IoWritePartitionTable
|
||||
@ stdcall -norelay IofCallDriver(ptr ptr)
|
||||
@ stdcall -norelay IofCompleteRequest(ptr long)
|
||||
+@ stdcall -norelay KeAcquireInStackQueuedSpinLock(ptr ptr)
|
||||
@ stub KeAcquireInStackQueuedSpinLockAtDpcLevel
|
||||
@ stub KeReleaseInStackQueuedSpinLockFromDpcLevel
|
||||
@ stub KeSetTimeUpdateNotifyRoutine
|
||||
diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h
|
||||
index 4c696f776dd..61374a7ed43 100644
|
||||
--- a/include/ddk/wdm.h
|
||||
+++ b/include/ddk/wdm.h
|
||||
@@ -1210,6 +1210,16 @@ typedef struct _CALLBACK_OBJECT
|
||||
UCHAR reserved[3];
|
||||
} CALLBACK_OBJECT, *PCALLBACK_OBJECT;
|
||||
|
||||
+typedef struct _KSPIN_LOCK_QUEUE {
|
||||
+ struct _KSPIN_LOCK_QUEUE * volatile Next;
|
||||
+ volatile PKSPIN_LOCK Lock;
|
||||
+} KSPIN_LOCK_QUEUE, *PKSPIN_LOCK_QUEUE;
|
||||
+
|
||||
+typedef struct _KLOCK_QUEUE_HANDLE {
|
||||
+ KSPIN_LOCK_QUEUE LockQueue;
|
||||
+ KIRQL OldIrql;
|
||||
+} KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
|
||||
+
|
||||
typedef NTSTATUS (NTAPI EX_CALLBACK_FUNCTION)(void *CallbackContext, void *Argument1, void *Argument2);
|
||||
typedef EX_CALLBACK_FUNCTION *PEX_CALLBACK_FUNCTION;
|
||||
|
||||
diff --git a/tools/make_specfiles b/tools/make_specfiles
|
||||
index 1e2400e4c7f..505bdf1e791 100755
|
||||
--- a/tools/make_specfiles
|
||||
+++ b/tools/make_specfiles
|
||||
@@ -338,6 +338,10 @@ my @dll_groups =
|
||||
"bcrypt",
|
||||
"ncrypt",
|
||||
],
|
||||
+ [
|
||||
+ "ntoskrnl.exe",
|
||||
+ "hal",
|
||||
+ ]
|
||||
);
|
||||
|
||||
my $update_flags = 0;
|
||||
--
|
||||
2.11.0
|
||||
|
@ -0,0 +1,60 @@
|
||||
From 15bd72533dd2d899e18c2201dd73ccfd2fb495c0 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 5 Mar 2017 19:28:08 +0100
|
||||
Subject: ntoskrnl.exe: Add KeReleaseInStackQueuedSpinLock stub.
|
||||
|
||||
---
|
||||
dlls/hal/hal.spec | 2 +-
|
||||
dlls/ntoskrnl.exe/ntoskrnl.c | 13 +++++++++++++
|
||||
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 1 +
|
||||
3 files changed, 15 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/hal/hal.spec b/dlls/hal/hal.spec
|
||||
index f441ac5271f..414e49bfec9 100644
|
||||
--- a/dlls/hal/hal.spec
|
||||
+++ b/dlls/hal/hal.spec
|
||||
@@ -9,7 +9,7 @@
|
||||
@ stub KeAcquireQueuedSpinLock
|
||||
@ stub KeAcquireQueuedSpinLockRaiseToSynch
|
||||
@ stub KeAcquireSpinLockRaiseToSynch
|
||||
-@ stub KeReleaseInStackQueuedSpinLock
|
||||
+@ stdcall -norelay KeReleaseInStackQueuedSpinLock(ptr) ntoskrnl.exe.KeReleaseInStackQueuedSpinLock
|
||||
@ stub KeReleaseQueuedSpinLock
|
||||
@ stub KeTryToAcquireQueuedSpinLock
|
||||
@ stub KeTryToAcquireQueuedSpinLockRaiseToSynch
|
||||
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
|
||||
index b8f6a25714a..8cda7b70388 100644
|
||||
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
|
||||
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
|
||||
@@ -3201,3 +3201,16 @@ void WINAPI KeAcquireInStackQueuedSpinLock(KSPIN_LOCK *spinlock, KLOCK_QUEUE_HAN
|
||||
{
|
||||
FIXME( "stub: %p %p\n", spinlock, handle);
|
||||
}
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * KeReleaseInStackQueuedSpinLock (NTOSKRNL.EXE.@)
|
||||
+ */
|
||||
+#ifdef DEFINE_FASTCALL2_ENTRYPOINT
|
||||
+DEFINE_FASTCALL2_ENTRYPOINT( KeReleaseInStackQueuedSpinLock )
|
||||
+void WINAPI __regs_KeReleaseInStackQueuedSpinLock(KLOCK_QUEUE_HANDLE *handle)
|
||||
+#else
|
||||
+void WINAPI KeReleaseInStackQueuedSpinLock(KLOCK_QUEUE_HANDLE *handle)
|
||||
+#endif
|
||||
+{
|
||||
+ FIXME( "stub: %p\n", handle);
|
||||
+}
|
||||
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
|
||||
index ba18200c503..e223eadc1a8 100644
|
||||
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
|
||||
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
|
||||
@@ -43,6 +43,7 @@
|
||||
@ stdcall -norelay IofCompleteRequest(ptr long)
|
||||
@ stdcall -norelay KeAcquireInStackQueuedSpinLock(ptr ptr)
|
||||
@ stub KeAcquireInStackQueuedSpinLockAtDpcLevel
|
||||
+@ stdcall -norelay KeReleaseInStackQueuedSpinLock(ptr)
|
||||
@ stub KeReleaseInStackQueuedSpinLockFromDpcLevel
|
||||
@ stub KeSetTimeUpdateNotifyRoutine
|
||||
@ stub KefAcquireSpinLockAtDpcLevel
|
||||
--
|
||||
2.11.0
|
||||
|
1
patches/ntoskrnl-InStackQueuedSpinLock/definition
Normal file
1
patches/ntoskrnl-InStackQueuedSpinLock/definition
Normal file
@ -0,0 +1 @@
|
||||
Fixes: [41472] Add stubs for Ke{Aquire,Release}InStackQueuedSpinLock functions
|
@ -271,6 +271,7 @@ patch_enable_all ()
|
||||
enable_ntdll_call_thread_func_wrapper="$1"
|
||||
enable_ntdll_raise_func_trampoline="$1"
|
||||
enable_ntoskrnl_DriverTest="$1"
|
||||
enable_ntoskrnl_InStackQueuedSpinLock="$1"
|
||||
enable_ntoskrnl_Stubs="$1"
|
||||
enable_nvapi_Stub_DLL="$1"
|
||||
enable_nvcuda_CUDA_Support="$1"
|
||||
@ -1031,6 +1032,9 @@ patch_enable ()
|
||||
ntoskrnl-DriverTest)
|
||||
enable_ntoskrnl_DriverTest="$2"
|
||||
;;
|
||||
ntoskrnl-InStackQueuedSpinLock)
|
||||
enable_ntoskrnl_InStackQueuedSpinLock="$2"
|
||||
;;
|
||||
ntoskrnl-Stubs)
|
||||
enable_ntoskrnl_Stubs="$2"
|
||||
;;
|
||||
@ -5974,6 +5978,24 @@ if test "$enable_ntoskrnl_DriverTest" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ntoskrnl-InStackQueuedSpinLock
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#41472] Add stubs for Ke{Aquire,Release}InStackQueuedSpinLock functions
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/hal/hal.spec, dlls/ntoskrnl.exe/ntoskrnl.c, dlls/ntoskrnl.exe/ntoskrnl.exe.spec, include/ddk/wdm.h,
|
||||
# | tools/make_specfiles
|
||||
# |
|
||||
if test "$enable_ntoskrnl_InStackQueuedSpinLock" -eq 1; then
|
||||
patch_apply ntoskrnl-InStackQueuedSpinLock/0001-ntoskrnl.exe-add-KeAcquireInStackQueuedSpinLock-stub.patch
|
||||
patch_apply ntoskrnl-InStackQueuedSpinLock/0002-ntoskrnl.exe-Add-KeReleaseInStackQueuedSpinLock-stub.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Austin English", "ntoskrnl.exe: Add KeAcquireInStackQueuedSpinLock stub.", 2 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "ntoskrnl.exe: Add KeReleaseInStackQueuedSpinLock stub.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ntoskrnl-Stubs
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
Loading…
x
Reference in New Issue
Block a user