[1/2] ntoskrnl.exe: add KeAcquireInStackQueuedSpinLock stub. (v3)

Sebastian Lackner sebastian at fds-team.de
Tue Mar 7 09:01:20 CST 2017


From: Austin English <austinenglish at gmail.com>

Signed-off-by: Austin English <austinenglish at gmail.com>
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---

Changes in v3:
* Add 'volatile' add the correct position.
* Some whitespace changes.

As already mentioned in previous emails, on Windows the export should
not really exist at both places, however we wouldn't be able to use
make_specfiles if we add -arch=... params.

 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..b3db46c9275 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



More information about the wine-patches mailing list