Jacek Caban : ntdll: Introduce wine_unix_call.

Alexandre Julliard julliard at winehq.org
Tue Jun 1 16:04:33 CDT 2021


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri May 28 19:03:09 2021 +0200

ntdll: Introduce wine_unix_call.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/ntdll.spec    | 1 +
 dlls/ntdll/unix/loader.c | 9 +++++++++
 include/winternl.h       | 3 +++
 3 files changed, 13 insertions(+)

diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 529bf6f269a..e2296f7cf27 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1612,6 +1612,7 @@
 @ cdecl -syscall wine_server_handle_to_fd(long long ptr ptr)
 
 # Unix interface
+@ cdecl -syscall __wine_unix_call(int64 long ptr)
 @ cdecl __wine_set_unix_funcs(long ptr)
 @ cdecl __wine_init_unix_lib(long long ptr ptr)
 @ extern __wine_syscall_dispatcher
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index ee66807997b..fb863bf17ad 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -1123,6 +1123,15 @@ static NTSTATUS CDECL init_unix_lib( void *module, DWORD reason, const void *ptr
 }
 
 
+/***********************************************************************
+ *           __wine_unix_call
+ */
+NTSTATUS CDECL __wine_unix_call( UINT64 handle, unsigned int code, void *args )
+{
+    return ((unixlib_entry_t*)(UINT_PTR)handle)[code]( args );
+}
+
+
 /***********************************************************************
  *           load_so_dll
  */
diff --git a/include/winternl.h b/include/winternl.h
index c688cdd5bb7..4f2fcc26682 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -4561,6 +4561,9 @@ static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le)
 
 /* Wine internal functions */
 extern NTSTATUS CDECL __wine_init_unix_lib( HMODULE module, DWORD reason, const void *ptr_in, void *ptr_out );
+extern NTSTATUS CDECL __wine_unix_call( UINT64 handle, unsigned int code, void *args );
+
+typedef NTSTATUS (*unixlib_entry_t)( void *args );
 
 /* The thread information for 16-bit threads */
 /* NtCurrentTeb()->SubSystemTib points to this */




More information about the wine-cvs mailing list