Alexandre Julliard : ntdll: Use syscall thunks for wait functions.

Alexandre Julliard julliard at winehq.org
Thu Jul 16 19:01:20 CDT 2020


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Jul 16 10:30:34 2020 +0200

ntdll: Use syscall thunks for wait functions.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/ntdll.spec    | 20 +++++++++----------
 dlls/ntdll/sync.c        | 50 ------------------------------------------------
 dlls/ntdll/unix/loader.c |  5 -----
 dlls/ntdll/unixlib.h     | 11 +----------
 4 files changed, 11 insertions(+), 75 deletions(-)

diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 405fac61e8..0183a10cab 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -191,7 +191,7 @@
 @ stdcall -arch=win32,arm64 NtCurrentTeb()
 # @ stub NtDebugActiveProcess
 # @ stub NtDebugContinue
-@ stdcall NtDelayExecution(long ptr)
+@ stdcall -syscall NtDelayExecution(long ptr)
 @ stdcall NtDeleteAtom(long)
 # @ stub NtDeleteBootEntry
 @ stdcall NtDeleteFile(ptr)
@@ -401,7 +401,7 @@
 @ stdcall NtSetValueKey(long ptr long long ptr long)
 @ stdcall NtSetVolumeInformationFile(long ptr ptr long long)
 @ stdcall NtShutdownSystem(long)
-@ stdcall NtSignalAndWaitForSingleObject(long long long ptr)
+@ stdcall -syscall NtSignalAndWaitForSingleObject(long long long ptr)
 @ stub NtStartProfile
 @ stub NtStopProfile
 @ stdcall NtSuspendProcess(long)
@@ -423,16 +423,16 @@
 @ stub NtW32Call
 # @ stub NtWaitForDebugEvent
 @ stdcall NtWaitForKeyedEvent(long ptr long ptr)
-@ stdcall NtWaitForMultipleObjects(long ptr long long ptr)
+@ stdcall -syscall NtWaitForMultipleObjects(long ptr long long ptr)
 @ stub NtWaitForProcessMutant
-@ stdcall NtWaitForSingleObject(long long ptr)
+@ stdcall -syscall NtWaitForSingleObject(long long ptr)
 @ stub NtWaitHighEventPair
 @ stub NtWaitLowEventPair
 @ stdcall NtWriteFile(long long ptr ptr ptr ptr long ptr ptr)
 @ stdcall NtWriteFileGather(long long ptr ptr ptr ptr long ptr ptr)
 @ stub NtWriteRequestData
 @ stdcall NtWriteVirtualMemory(long ptr ptr long ptr)
-@ stdcall NtYieldExecution()
+@ stdcall -syscall NtYieldExecution()
 @ stub PfxFindPrefix
 @ stub PfxInitialize
 @ stub PfxInsertPrefix
@@ -1176,7 +1176,7 @@
 # @ stub ZwCreateWaitablePort
 # @ stub ZwDebugActiveProcess
 # @ stub ZwDebugContinue
-@ stdcall -private ZwDelayExecution(long ptr) NtDelayExecution
+@ stdcall -private -syscall ZwDelayExecution(long ptr) NtDelayExecution
 @ stdcall -private ZwDeleteAtom(long) NtDeleteAtom
 # @ stub ZwDeleteBootEntry
 @ stdcall -private ZwDeleteFile(ptr) NtDeleteFile
@@ -1385,7 +1385,7 @@
 @ stdcall -private ZwSetValueKey(long ptr long long ptr long) NtSetValueKey
 @ stdcall -private ZwSetVolumeInformationFile(long ptr ptr long long) NtSetVolumeInformationFile
 @ stdcall -private ZwShutdownSystem(long) NtShutdownSystem
-@ stdcall -private ZwSignalAndWaitForSingleObject(long long long ptr) NtSignalAndWaitForSingleObject
+@ stdcall -private -syscall ZwSignalAndWaitForSingleObject(long long long ptr) NtSignalAndWaitForSingleObject
 @ stub ZwStartProfile
 @ stub ZwStopProfile
 @ stdcall -private ZwSuspendProcess(long) NtSuspendProcess
@@ -1407,16 +1407,16 @@
 @ stub ZwW32Call
 # @ stub ZwWaitForDebugEvent
 @ stdcall -private ZwWaitForKeyedEvent(long ptr long ptr) NtWaitForKeyedEvent
-@ stdcall -private ZwWaitForMultipleObjects(long ptr long long ptr) NtWaitForMultipleObjects
+@ stdcall -private -syscall ZwWaitForMultipleObjects(long ptr long long ptr) NtWaitForMultipleObjects
 @ stub ZwWaitForProcessMutant
-@ stdcall -private ZwWaitForSingleObject(long long ptr) NtWaitForSingleObject
+@ stdcall -private -syscall ZwWaitForSingleObject(long long ptr) NtWaitForSingleObject
 @ stub ZwWaitHighEventPair
 @ stub ZwWaitLowEventPair
 @ stdcall -private ZwWriteFile(long long ptr ptr ptr ptr long ptr ptr) NtWriteFile
 @ stdcall -private ZwWriteFileGather(long long ptr ptr ptr ptr long ptr ptr) NtWriteFileGather
 @ stub ZwWriteRequestData
 @ stdcall -private ZwWriteVirtualMemory(long ptr ptr long ptr) NtWriteVirtualMemory
-@ stdcall -private ZwYieldExecution() NtYieldExecution
+@ stdcall -private -syscall ZwYieldExecution() NtYieldExecution
 @ cdecl -private -arch=i386 _CIcos()
 @ cdecl -private -arch=i386 _CIlog()
 @ cdecl -private -arch=i386 _CIpow()
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index 6eb328f025..a6666e042e 100644
--- a/dlls/ntdll/sync.c
+++ b/dlls/ntdll/sync.c
@@ -167,56 +167,6 @@ NTSTATUS WINAPI NtSetTimerResolution(IN ULONG resolution,
 
 
 
-/* wait operations */
-
-/******************************************************************
- *		NtWaitForMultipleObjects (NTDLL.@)
- */
-NTSTATUS WINAPI NtWaitForMultipleObjects( DWORD count, const HANDLE *handles,
-                                          BOOLEAN wait_any, BOOLEAN alertable,
-                                          const LARGE_INTEGER *timeout )
-{
-    return unix_funcs->NtWaitForMultipleObjects( count, handles, wait_any, alertable, timeout );
-}
-
-
-/******************************************************************
- *		NtWaitForSingleObject (NTDLL.@)
- */
-NTSTATUS WINAPI NtWaitForSingleObject(HANDLE handle, BOOLEAN alertable, const LARGE_INTEGER *timeout )
-{
-    return unix_funcs->NtWaitForSingleObject( handle, alertable, timeout );
-}
-
-
-/******************************************************************
- *		NtSignalAndWaitForSingleObject (NTDLL.@)
- */
-NTSTATUS WINAPI NtSignalAndWaitForSingleObject( HANDLE signal, HANDLE wait,
-                                                BOOLEAN alertable, const LARGE_INTEGER *timeout )
-{
-    return unix_funcs->NtSignalAndWaitForSingleObject( signal, wait, alertable, timeout );
-}
-
-
-/******************************************************************
- *		NtYieldExecution (NTDLL.@)
- */
-NTSTATUS WINAPI NtYieldExecution(void)
-{
-    return unix_funcs->NtYieldExecution();
-}
-
-
-/******************************************************************
- *		NtDelayExecution (NTDLL.@)
- */
-NTSTATUS WINAPI NtDelayExecution( BOOLEAN alertable, const LARGE_INTEGER *timeout )
-{
-    return unix_funcs->NtDelayExecution( alertable, timeout );
-}
-
-
 /******************************************************************************
  *              NtCreateKeyedEvent (NTDLL.@)
  */
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 53c12384e9..d2ebeae935 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1372,7 +1372,6 @@ static struct unix_funcs unix_funcs =
     NtCreateThreadEx,
     NtCreateUserProcess,
     NtCurrentTeb,
-    NtDelayExecution,
     NtDeleteFile,
     NtDeviceIoControlFile,
     NtDuplicateObject,
@@ -1430,7 +1429,6 @@ static struct unix_funcs unix_funcs =
     NtSetLdtEntries,
     NtSetSystemTime,
     NtSetVolumeInformationFile,
-    NtSignalAndWaitForSingleObject,
     NtSuspendProcess,
     NtSuspendThread,
     NtTerminateProcess,
@@ -1438,12 +1436,9 @@ static struct unix_funcs unix_funcs =
     NtUnlockVirtualMemory,
     NtUnmapViewOfSection,
     NtWaitForKeyedEvent,
-    NtWaitForMultipleObjects,
-    NtWaitForSingleObject,
     NtWriteFile,
     NtWriteFileGather,
     NtWriteVirtualMemory,
-    NtYieldExecution,
     DbgUiIssueRemoteBreakin,
     RtlGetSystemTimePrecise,
     RtlWaitOnAddress,
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 5546107d02..9f83b30c40 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -28,7 +28,7 @@ struct msghdr;
 struct _DISPATCHER_CONTEXT;
 
 /* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 79
+#define NTDLL_UNIXLIB_VERSION 80
 
 struct unix_funcs
 {
@@ -67,7 +67,6 @@ struct unix_funcs
                                                  RTL_USER_PROCESS_PARAMETERS *params, PS_CREATE_INFO *info,
                                                  PS_ATTRIBUTE_LIST *attr );
     TEB *         (WINAPI *NtCurrentTeb)(void);
-    NTSTATUS      (WINAPI *NtDelayExecution)( BOOLEAN alertable, const LARGE_INTEGER *timeout );
     NTSTATUS      (WINAPI *NtDeleteFile)( OBJECT_ATTRIBUTES *attr );
     NTSTATUS      (WINAPI *NtDeviceIoControlFile)( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc,
                                                    void *apc_context, IO_STATUS_BLOCK *io, ULONG code,
@@ -184,8 +183,6 @@ struct unix_funcs
     NTSTATUS      (WINAPI *NtSetSystemTime)( const LARGE_INTEGER *new, LARGE_INTEGER *old );
     NTSTATUS      (WINAPI *NtSetVolumeInformationFile)( HANDLE handle, IO_STATUS_BLOCK *io, void *info,
                                                         ULONG length, FS_INFORMATION_CLASS class );
-    NTSTATUS      (WINAPI *NtSignalAndWaitForSingleObject)( HANDLE signal, HANDLE wait,
-                                                            BOOLEAN alertable, const LARGE_INTEGER *timeout );
     NTSTATUS      (WINAPI *NtSuspendProcess)( HANDLE handle );
     NTSTATUS      (WINAPI *NtSuspendThread)( HANDLE handle, ULONG *count );
     NTSTATUS      (WINAPI *NtTerminateProcess)( HANDLE handle, LONG exit_code );
@@ -195,11 +192,6 @@ struct unix_funcs
     NTSTATUS      (WINAPI *NtUnmapViewOfSection)( HANDLE process, PVOID addr );
     NTSTATUS      (WINAPI *NtWaitForKeyedEvent)( HANDLE handle, const void *key, BOOLEAN alertable,
                                                  const LARGE_INTEGER *timeout );
-    NTSTATUS      (WINAPI *NtWaitForMultipleObjects)( DWORD count, const HANDLE *handles,
-                                                      BOOLEAN wait_any, BOOLEAN alertable,
-                                                      const LARGE_INTEGER *timeout );
-    NTSTATUS      (WINAPI *NtWaitForSingleObject)( HANDLE handle, BOOLEAN alertable,
-                                                   const LARGE_INTEGER *timeout );
     NTSTATUS      (WINAPI *NtWriteFile)( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc_user,
                                          IO_STATUS_BLOCK *io, const void *buffer, ULONG length,
                                          LARGE_INTEGER *offset, ULONG *key );
@@ -209,7 +201,6 @@ struct unix_funcs
                                                LARGE_INTEGER *offset, ULONG *key );
     NTSTATUS      (WINAPI *NtWriteVirtualMemory)( HANDLE process, void *addr, const void *buffer,
                                                   SIZE_T size, SIZE_T *bytes_written );
-    NTSTATUS      (WINAPI *NtYieldExecution)(void);
 
     /* other Win32 API functions */
     NTSTATUS      (WINAPI *DbgUiIssueRemoteBreakin)( HANDLE process );




More information about the wine-cvs mailing list