Commit 95e2d05e authored by Alexandre Julliard's avatar Alexandre Julliard

ntdll: Implement NtContinue() in the Unix library.

parent e561ce4b
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
@ stdcall NtCompleteConnectPort(ptr) @ stdcall NtCompleteConnectPort(ptr)
# @ stub NtCompressKey # @ stub NtCompressKey
@ stdcall NtConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr) @ stdcall NtConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr)
@ stub NtContinue @ stdcall NtContinue(ptr long)
# @ stub NtCreateDebugObject # @ stub NtCreateDebugObject
@ stdcall NtCreateDirectoryObject(ptr long ptr) @ stdcall NtCreateDirectoryObject(ptr long ptr)
@ stdcall NtCreateEvent(ptr long ptr long long) @ stdcall NtCreateEvent(ptr long ptr long long)
...@@ -1145,7 +1145,7 @@ ...@@ -1145,7 +1145,7 @@
@ stdcall -private ZwCompleteConnectPort(ptr) NtCompleteConnectPort @ stdcall -private ZwCompleteConnectPort(ptr) NtCompleteConnectPort
# @ stub ZwCompressKey # @ stub ZwCompressKey
@ stdcall -private ZwConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr) NtConnectPort @ stdcall -private ZwConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr) NtConnectPort
@ stub ZwContinue @ stdcall -private ZwContinue(ptr long) NtContinue
# @ stub ZwCreateDebugObject # @ stub ZwCreateDebugObject
@ stdcall -private ZwCreateDirectoryObject(ptr long ptr) NtCreateDirectoryObject @ stdcall -private ZwCreateDirectoryObject(ptr long ptr) NtCreateDirectoryObject
@ stdcall -private ZwCreateEvent(ptr long ptr long long) NtCreateEvent @ stdcall -private ZwCreateEvent(ptr long ptr long long) NtCreateEvent
......
...@@ -603,6 +603,15 @@ NTSTATUS get_thread_context( HANDLE handle, context_t *context, unsigned int fla ...@@ -603,6 +603,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.@) * NtSetContextThread (NTDLL.@)
* ZwSetContextThread (NTDLL.@) * ZwSetContextThread (NTDLL.@)
*/ */
......
...@@ -988,6 +988,7 @@ static struct unix_funcs unix_funcs = ...@@ -988,6 +988,7 @@ static struct unix_funcs unix_funcs =
NtCancelTimer, NtCancelTimer,
NtClearEvent, NtClearEvent,
NtClose, NtClose,
NtContinue,
NtCreateEvent, NtCreateEvent,
NtCreateKeyedEvent, NtCreateKeyedEvent,
NtCreateMutant, NtCreateMutant,
......
...@@ -471,6 +471,18 @@ NTSTATUS WINAPI NtRaiseException( EXCEPTION_RECORD *rec, CONTEXT *context, BOOL ...@@ -471,6 +471,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 * set_thread_context
*/ */
NTSTATUS set_thread_context( HANDLE handle, const context_t *context, BOOL *self ) NTSTATUS set_thread_context( HANDLE handle, const context_t *context, BOOL *self )
......
...@@ -28,7 +28,7 @@ struct ldt_copy; ...@@ -28,7 +28,7 @@ struct ldt_copy;
struct msghdr; struct msghdr;
/* increment this when you change the function table */ /* increment this when you change the function table */
#define NTDLL_UNIXLIB_VERSION 31 #define NTDLL_UNIXLIB_VERSION 32
struct unix_funcs struct unix_funcs
{ {
...@@ -39,6 +39,7 @@ struct unix_funcs ...@@ -39,6 +39,7 @@ struct unix_funcs
NTSTATUS (WINAPI *NtCancelTimer)( HANDLE handle, BOOLEAN *state ); NTSTATUS (WINAPI *NtCancelTimer)( HANDLE handle, BOOLEAN *state );
NTSTATUS (WINAPI *NtClearEvent)( HANDLE handle ); NTSTATUS (WINAPI *NtClearEvent)( HANDLE handle );
NTSTATUS (WINAPI *NtClose)( HANDLE handle ); NTSTATUS (WINAPI *NtClose)( HANDLE handle );
NTSTATUS (WINAPI *NtContinue)( CONTEXT *context, BOOLEAN alertable );
NTSTATUS (WINAPI *NtCreateEvent)( HANDLE *handle, ACCESS_MASK access, NTSTATUS (WINAPI *NtCreateEvent)( HANDLE *handle, ACCESS_MASK access,
const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN state ); const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN state );
NTSTATUS (WINAPI *NtCreateKeyedEvent)( HANDLE *handle, ACCESS_MASK access, NTSTATUS (WINAPI *NtCreateKeyedEvent)( HANDLE *handle, ACCESS_MASK access,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment