From: Sebastian Lackner Subject: [2/8] ntdll: Implement TpSetPoolMaxThreads. Message-Id: <55933A99.9020100@fds-team.de> Date: Wed, 1 Jul 2015 02:55:53 +0200 --- 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