[2/8] ntdll: Implement TpSetPoolMaxThreads.

Sebastian Lackner sebastian at fds-team.de
Tue Jun 30 19:55:53 CDT 2015


---
 dlls/ntdll/ntdll.spec   |    1 +
 dlls/ntdll/threadpool.c |   15 +++++++++++++++
 2 files changed, 16 insertions(+)

diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index cd4e853..f023443 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -972,6 +972,7 @@
 @ stdcall RtlxUnicodeStringToOemSize(ptr) RtlUnicodeStringToOemSize
 @ stdcall TpAllocPool(ptr ptr)
 @ stdcall TpReleasePool(ptr)
+@ stdcall TpSetPoolMaxThreads(ptr long)
 @ stdcall TpSimpleTryPost(ptr ptr ptr)
 @ stdcall -ret64 VerSetConditionMask(int64 long long)
 @ stdcall WinSqmIsOptedIn()
diff --git a/dlls/ntdll/threadpool.c b/dlls/ntdll/threadpool.c
index d8dc929..fbecfbc 100644
--- a/dlls/ntdll/threadpool.c
+++ b/dlls/ntdll/threadpool.c
@@ -1466,6 +1466,21 @@ VOID WINAPI TpReleasePool( TP_POOL *pool )
 }
 
 /***********************************************************************
+ *           TpSetPoolMaxThreads    (NTDLL.@)
+ */
+VOID WINAPI TpSetPoolMaxThreads( TP_POOL *pool, DWORD maximum )
+{
+    struct threadpool *this = impl_from_TP_POOL( pool );
+
+    TRACE( "%p %u\n", pool, maximum );
+
+    RtlEnterCriticalSection( &this->cs );
+    this->max_workers = max( maximum, 1 );
+    this->min_workers = min( this->min_workers, this->max_workers );
+    RtlLeaveCriticalSection( &this->cs );
+}
+
+/***********************************************************************
  *           TpSimpleTryPost    (NTDLL.@)
  */
 NTSTATUS WINAPI TpSimpleTryPost( PTP_SIMPLE_CALLBACK callback, PVOID userdata,
-- 
2.4.4



More information about the wine-patches mailing list