Sebastian Lackner : kernel32: Forward threadpool work functions to ntdll.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jul 3 09:02:36 CDT 2015


Module: wine
Branch: master
Commit: 1165cc095359d64c6ef3d63f3a1511afe9f09aab
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1165cc095359d64c6ef3d63f3a1511afe9f09aab

Author: Sebastian Lackner <sebastian at 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 */
 




More information about the wine-cvs mailing list