Module: wine Branch: master Commit: 1165cc095359d64c6ef3d63f3a1511afe9f09aab URL: http://source.winehq.org/git/wine.git/?a=commit;h=1165cc095359d64c6ef3d63f3a...
Author: Sebastian Lackner sebastian@fds-team.de Date: Fri Jul 3 01:59:38 2015 +0200
kernel32: Forward threadpool work functions to ntdll.
---
dlls/kernel32/kernel32.spec | 8 ++++---- dlls/kernel32/thread.c | 21 +++++++++++++++++++++ include/winternl.h | 4 ++++ 3 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index b48ea3b..882013c 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -234,7 +234,7 @@ # @ stub CloseThreadpoolIo # @ stub CloseThreadpoolTimer # @ stub CloseThreadpoolWait -# @ stub CloseThreadpoolWork +@ stdcall CloseThreadpoolWork(ptr) ntdll.TpReleaseWork @ stdcall CmdBatNotification(long) @ stdcall CommConfigDialogA(str long ptr) @ stdcall CommConfigDialogW(wstr long ptr) @@ -336,7 +336,7 @@ # @ stub CreateThreadpoolIo # @ stub CreateThreadpoolTimer # @ stub CreateThreadpoolWait -# @ stub CreateThreadpoolWork +@ stdcall CreateThreadpoolWork(ptr ptr ptr) @ stdcall CreateTimerQueue () @ stdcall CreateTimerQueueTimer(ptr long ptr ptr long long long) @ stdcall CreateToolhelp32Snapshot(long long) @@ -1482,7 +1482,7 @@ # @ stub SortCloseHandle # @ stub SortGetHandle # @ stub StartThreadpoolIo -# @ stub SubmitThreadpoolWork +@ stdcall SubmitThreadpoolWork(ptr) ntdll.TpPostWork @ stdcall SuspendThread(long) @ stdcall SwitchToFiber(ptr) @ stdcall SwitchToThread() @@ -1573,7 +1573,7 @@ # @ stub WaitForThreadpoolIoCallbacks # @ stub WaitForThreadpoolTimerCallbacks # @ stub WaitForThreadpoolWaitCallbacks -# @ stub WaitForThreadpoolWorkCallbacks +@ stdcall WaitForThreadpoolWorkCallbacks(ptr long) ntdll.TpWaitForWork @ stdcall WaitNamedPipeA (str long) @ stdcall WaitNamedPipeW (wstr long) @ stdcall WakeAllConditionVariable(ptr) ntdll.RtlWakeAllConditionVariable diff --git a/dlls/kernel32/thread.c b/dlls/kernel32/thread.c index b2b9def..313295c 100644 --- a/dlls/kernel32/thread.c +++ b/dlls/kernel32/thread.c @@ -880,3 +880,24 @@ PTP_CLEANUP_GROUP WINAPI CreateThreadpoolCleanupGroup( void )
return group; } + +/*********************************************************************** + * CreateThreadpoolWork (KERNEL32.@) + */ +PTP_WORK WINAPI CreateThreadpoolWork( PTP_WORK_CALLBACK callback, PVOID userdata, + TP_CALLBACK_ENVIRON *environment ) +{ + TP_WORK *work; + NTSTATUS status; + + TRACE( "%p, %p, %p\n", callback, userdata, environment ); + + status = TpAllocWork( &work, callback, userdata, environment ); + if (status) + { + SetLastError( RtlNtStatusToDosError(status) ); + return NULL; + } + + return work; +} diff --git a/include/winternl.h b/include/winternl.h index c918e09..ab8de5e 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -2619,8 +2619,12 @@ NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PC /* Threadpool functions */
NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **); +NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI void WINAPI TpPostWork(TP_WORK *); NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *); NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID); +NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *); +NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL);
/* Wine internal functions */