Alexandre Julliard : ntdll: Implement NtContinue() in the Unix library.
Alexandre Julliard
julliard at winehq.org
Mon Jun 8 15:19:54 CDT 2020
Module: wine
Branch: master
Commit: 95e2d05e5d6b92a2f6b28e00f36064b7bf6b249a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=95e2d05e5d6b92a2f6b28e00f36064b7bf6b249a
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sat Jun 6 15:16:38 2020 +0200
ntdll: Implement NtContinue() in the Unix library.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/ntdll.spec | 4 ++--
dlls/ntdll/thread.c | 9 +++++++++
dlls/ntdll/unix/loader.c | 1 +
dlls/ntdll/unix/thread.c | 12 ++++++++++++
dlls/ntdll/unixlib.h | 3 ++-
5 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 11fa03b4d1..766e458621 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -157,7 +157,7 @@
@ stdcall NtCompleteConnectPort(ptr)
# @ stub NtCompressKey
@ stdcall NtConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr)
-@ stub NtContinue
+@ stdcall NtContinue(ptr long)
# @ stub NtCreateDebugObject
@ stdcall NtCreateDirectoryObject(ptr long ptr)
@ stdcall NtCreateEvent(ptr long ptr long long)
@@ -1145,7 +1145,7 @@
@ stdcall -private ZwCompleteConnectPort(ptr) NtCompleteConnectPort
# @ stub ZwCompressKey
@ stdcall -private ZwConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr) NtConnectPort
-@ stub ZwContinue
+@ stdcall -private ZwContinue(ptr long) NtContinue
# @ stub ZwCreateDebugObject
@ stdcall -private ZwCreateDirectoryObject(ptr long ptr) NtCreateDirectoryObject
@ stdcall -private ZwCreateEvent(ptr long ptr long long) NtCreateEvent
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 18664030df..d045466f6d 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -602,6 +602,15 @@ NTSTATUS get_thread_context( HANDLE handle, context_t *context, unsigned int fla
}
+/***********************************************************************
+ * NtContinue (NTDLL.@)
+ */
+NTSTATUS WINAPI NtContinue( CONTEXT *context, BOOLEAN alertable )
+{
+ return unix_funcs->NtContinue( context, alertable );
+}
+
+
/***********************************************************************
* NtSetContextThread (NTDLL.@)
* ZwSetContextThread (NTDLL.@)
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 3116c885d1..618e3d6adb 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -988,6 +988,7 @@ static struct unix_funcs unix_funcs =
NtCancelTimer,
NtClearEvent,
NtClose,
+ NtContinue,
NtCreateEvent,
NtCreateKeyedEvent,
NtCreateMutant,
diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
index 1fc7dc8454..d4b7a51a62 100644
--- a/dlls/ntdll/unix/thread.c
+++ b/dlls/ntdll/unix/thread.c
@@ -470,6 +470,18 @@ NTSTATUS WINAPI NtRaiseException( EXCEPTION_RECORD *rec, CONTEXT *context, BOOL
}
+/***********************************************************************
+ * NtContinue (NTDLL.@)
+ */
+NTSTATUS WINAPI NtContinue( CONTEXT *context, BOOLEAN alertable )
+{
+ static const LARGE_INTEGER zero_timeout;
+
+ if (alertable) server_wait( NULL, 0, SELECT_INTERRUPTIBLE | SELECT_ALERTABLE, &zero_timeout );
+ return NtSetContextThread( GetCurrentThread(), context );
+}
+
+
/***********************************************************************
* set_thread_context
*/
diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h
index 779b91c89b..017a0a71b3 100644
--- a/dlls/ntdll/unixlib.h
+++ b/dlls/ntdll/unixlib.h
@@ -28,7 +28,7 @@ struct ldt_copy;
struct msghdr;
/* increment this when you change the function table */
-#define NTDLL_UNIXLIB_VERSION 31
+#define NTDLL_UNIXLIB_VERSION 32
struct unix_funcs
{
@@ -39,6 +39,7 @@ struct unix_funcs
NTSTATUS (WINAPI *NtCancelTimer)( HANDLE handle, BOOLEAN *state );
NTSTATUS (WINAPI *NtClearEvent)( HANDLE handle );
NTSTATUS (WINAPI *NtClose)( HANDLE handle );
+ NTSTATUS (WINAPI *NtContinue)( CONTEXT *context, BOOLEAN alertable );
NTSTATUS (WINAPI *NtCreateEvent)( HANDLE *handle, ACCESS_MASK access,
const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN state );
NTSTATUS (WINAPI *NtCreateKeyedEvent)( HANDLE *handle, ACCESS_MASK access,
More information about the wine-cvs
mailing list