FreeRDP
include/winpr/pool.h File Reference
#include <winpr/winpr.h>
#include <winpr/wtypes.h>
#include <winpr/synch.h>
#include <winpr/thread.h>
This graph shows which files directly or indirectly include this file:

Data Structures

struct  PTP_POOL_STACK_INFORMATION
 
struct  TP_CALLBACK_ENVIRON_V1
 

Macros

#define WINPR_THREAD_POOL   1
 
#define CreateThreadpoolWait   winpr_CreateThreadpoolWait
 
#define CloseThreadpoolWait   winpr_CloseThreadpoolWait
 
#define SetThreadpoolWait   winpr_SetThreadpoolWait
 
#define WaitForThreadpoolWaitCallbacks   winpr_WaitForThreadpoolWaitCallbacks
 
#define CreateThreadpoolWork   winpr_CreateThreadpoolWork
 
#define CloseThreadpoolWork   winpr_CloseThreadpoolWork
 
#define SubmitThreadpoolWork   winpr_SubmitThreadpoolWork
 
#define TrySubmitThreadpoolCallback   winpr_TrySubmitThreadpoolCallback
 
#define WaitForThreadpoolWorkCallbacks   winpr_WaitForThreadpoolWorkCallbacks
 
#define CreateThreadpoolTimer   winpr_CreateThreadpoolTimer
 
#define CloseThreadpoolTimer   winpr_CloseThreadpoolTimer
 
#define IsThreadpoolTimerSet   winpr_IsThreadpoolTimerSet
 
#define SetThreadpoolTimer   winpr_SetThreadpoolTimer
 
#define WaitForThreadpoolTimerCallbacks   winpr_WaitForThreadpoolTimerCallbacks
 
#define CreateThreadpoolIo   winpr_CreateThreadpoolIo
 
#define CloseThreadpoolIo   winpr_CloseThreadpoolIo
 
#define StartThreadpoolIo   winpr_StartThreadpoolIo
 
#define CancelThreadpoolIo   winpr_CancelThreadpoolIo
 
#define WaitForThreadpoolIoCallbacks   winpr_WaitForThreadpoolIoCallbacks
 
#define SetThreadpoolCallbackCleanupGroup   winpr_SetThreadpoolCallbackCleanupGroup
 
#define CreateThreadpoolCleanupGroup   winpr_CreateThreadpoolCleanupGroup
 
#define CloseThreadpoolCleanupGroupMembers   winpr_CloseThreadpoolCleanupGroupMembers
 
#define CloseThreadpoolCleanupGroup   winpr_CloseThreadpoolCleanupGroup
 
#define CreateThreadpool   winpr_CreateThreadpool
 
#define CloseThreadpool   winpr_CloseThreadpool
 
#define SetThreadpoolThreadMinimum   winpr_SetThreadpoolThreadMinimum
 
#define SetThreadpoolThreadMaximum   winpr_SetThreadpoolThreadMaximum
 
#define SetEventWhenCallbackReturns   winpr_SetEventWhenCallbackReturns
 
#define ReleaseSemaphoreWhenCallbackReturns   winpr_ReleaseSemaphoreWhenCallbackReturns
 
#define ReleaseMutexWhenCallbackReturns   winpr_ReleaseMutexWhenCallbackReturns
 
#define LeaveCriticalSectionWhenCallbackReturns   winpr_LeaveCriticalSectionWhenCallbackReturns
 
#define FreeLibraryWhenCallbackReturns   winpr_FreeLibraryWhenCallbackReturns
 
#define DisassociateCurrentThreadFromCallback   winpr_DisassociateCurrentThreadFromCallback
 

Typedefs

typedef DWORD TP_VERSION
 
typedef DWORD * PTP_VERSION
 
typedef VOID(* PTP_SIMPLE_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context)
 
typedef VOID(* PTP_CLEANUP_GROUP_CANCEL_CALLBACK) (PVOID ObjectContext, PVOID CleanupContext)
 
typedef TP_CALLBACK_ENVIRON_V1 TP_CALLBACK_ENVIRON
 
typedef TP_CALLBACK_ENVIRON_V1PTP_CALLBACK_ENVIRON
 
typedef DWORD TP_WAIT_RESULT
 
typedef VOID(* PTP_WORK_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work)
 
typedef VOID(* PTP_TIMER_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_TIMER Timer)
 
typedef VOID(* PTP_WAIT_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WAIT Wait, TP_WAIT_RESULT WaitResult)
 
typedef VOID(* PTP_WIN32_IO_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PVOID Overlapped, ULONG IoResult, ULONG_PTR NumberOfBytesTransferred, PTP_IO Io)
 

Functions

WINPR_API PTP_WAIT winpr_CreateThreadpoolWait (PTP_WAIT_CALLBACK pfnwa, PVOID pv, PTP_CALLBACK_ENVIRON pcbe)
 
WINPR_API VOID winpr_CloseThreadpoolWait (PTP_WAIT pwa)
 
WINPR_API VOID winpr_SetThreadpoolWait (PTP_WAIT pwa, HANDLE h, PFILETIME pftTimeout)
 
WINPR_API VOID winpr_WaitForThreadpoolWaitCallbacks (PTP_WAIT pwa, BOOL fCancelPendingCallbacks)
 
WINPR_API PTP_WORK winpr_CreateThreadpoolWork (PTP_WORK_CALLBACK pfnwk, PVOID pv, PTP_CALLBACK_ENVIRON pcbe)
 
WINPR_API VOID winpr_CloseThreadpoolWork (PTP_WORK pwk)
 
WINPR_API VOID winpr_SubmitThreadpoolWork (PTP_WORK pwk)
 
WINPR_API BOOL winpr_TrySubmitThreadpoolCallback (PTP_SIMPLE_CALLBACK pfns, PVOID pv, PTP_CALLBACK_ENVIRON pcbe)
 
WINPR_API VOID winpr_WaitForThreadpoolWorkCallbacks (PTP_WORK pwk, BOOL fCancelPendingCallbacks)
 
WINPR_API PTP_TIMER winpr_CreateThreadpoolTimer (PTP_TIMER_CALLBACK pfnti, PVOID pv, PTP_CALLBACK_ENVIRON pcbe)
 
WINPR_API VOID winpr_CloseThreadpoolTimer (PTP_TIMER pti)
 
WINPR_API BOOL winpr_IsThreadpoolTimerSet (PTP_TIMER pti)
 
WINPR_API VOID winpr_SetThreadpoolTimer (PTP_TIMER pti, PFILETIME pftDueTime, DWORD msPeriod, DWORD msWindowLength)
 
WINPR_API VOID winpr_WaitForThreadpoolTimerCallbacks (PTP_TIMER pti, BOOL fCancelPendingCallbacks)
 
WINPR_API PTP_IO winpr_CreateThreadpoolIo (HANDLE fl, PTP_WIN32_IO_CALLBACK pfnio, PVOID pv, PTP_CALLBACK_ENVIRON pcbe)
 
WINPR_API VOID winpr_CloseThreadpoolIo (PTP_IO pio)
 
WINPR_API VOID winpr_StartThreadpoolIo (PTP_IO pio)
 
WINPR_API VOID winpr_CancelThreadpoolIo (PTP_IO pio)
 
WINPR_API VOID winpr_WaitForThreadpoolIoCallbacks (PTP_IO pio, BOOL fCancelPendingCallbacks)
 
WINPR_API VOID winpr_SetThreadpoolCallbackCleanupGroup (PTP_CALLBACK_ENVIRON pcbe, PTP_CLEANUP_GROUP ptpcg, PTP_CLEANUP_GROUP_CANCEL_CALLBACK pfng)
 
WINPR_API PTP_CLEANUP_GROUP winpr_CreateThreadpoolCleanupGroup (void)
 
WINPR_API VOID winpr_CloseThreadpoolCleanupGroupMembers (PTP_CLEANUP_GROUP ptpcg, BOOL fCancelPendingCallbacks, PVOID pvCleanupContext)
 
WINPR_API VOID winpr_CloseThreadpoolCleanupGroup (PTP_CLEANUP_GROUP ptpcg)
 
WINPR_API PTP_POOL winpr_CreateThreadpool (PVOID reserved)
 
WINPR_API VOID winpr_CloseThreadpool (PTP_POOL ptpp)
 
WINPR_API BOOL winpr_SetThreadpoolThreadMinimum (PTP_POOL ptpp, DWORD cthrdMic)
 
WINPR_API VOID winpr_SetThreadpoolThreadMaximum (PTP_POOL ptpp, DWORD cthrdMost)
 
static INLINE VOID InitializeThreadpoolEnvironment (PTP_CALLBACK_ENVIRON pcbe)
 
static INLINE VOID DestroyThreadpoolEnvironment (PTP_CALLBACK_ENVIRON pcbe)
 
static INLINE VOID SetThreadpoolCallbackPool (PTP_CALLBACK_ENVIRON pcbe, PTP_POOL ptpp)
 
static INLINE VOID SetThreadpoolCallbackRunsLong (PTP_CALLBACK_ENVIRON pcbe)
 
static INLINE VOID SetThreadpoolCallbackLibrary (PTP_CALLBACK_ENVIRON pcbe, PVOID mod)
 
WINPR_API BOOL winpr_CallbackMayRunLong (PTP_CALLBACK_INSTANCE pci)
 
WINPR_API VOID winpr_SetEventWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE evt)
 
WINPR_API VOID winpr_ReleaseSemaphoreWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE sem, DWORD crel)
 
WINPR_API VOID winpr_ReleaseMutexWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE mut)
 
WINPR_API VOID winpr_LeaveCriticalSectionWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, PCRITICAL_SECTION pcs)
 
WINPR_API VOID winpr_FreeLibraryWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HMODULE mod)
 
WINPR_API VOID winpr_DisassociateCurrentThreadFromCallback (PTP_CALLBACK_INSTANCE pci)
 

Macro Definition Documentation

#define CancelThreadpoolIo   winpr_CancelThreadpoolIo
#define CloseThreadpool   winpr_CloseThreadpool
#define CloseThreadpoolCleanupGroup   winpr_CloseThreadpoolCleanupGroup
#define CloseThreadpoolCleanupGroupMembers   winpr_CloseThreadpoolCleanupGroupMembers
#define CloseThreadpoolIo   winpr_CloseThreadpoolIo
#define CloseThreadpoolTimer   winpr_CloseThreadpoolTimer
#define CloseThreadpoolWait   winpr_CloseThreadpoolWait
#define CloseThreadpoolWork   winpr_CloseThreadpoolWork
#define CreateThreadpool   winpr_CreateThreadpool
#define CreateThreadpoolCleanupGroup   winpr_CreateThreadpoolCleanupGroup
#define CreateThreadpoolIo   winpr_CreateThreadpoolIo
#define CreateThreadpoolTimer   winpr_CreateThreadpoolTimer
#define CreateThreadpoolWait   winpr_CreateThreadpoolWait
#define CreateThreadpoolWork   winpr_CreateThreadpoolWork
#define DisassociateCurrentThreadFromCallback   winpr_DisassociateCurrentThreadFromCallback
#define FreeLibraryWhenCallbackReturns   winpr_FreeLibraryWhenCallbackReturns
#define IsThreadpoolTimerSet   winpr_IsThreadpoolTimerSet
#define LeaveCriticalSectionWhenCallbackReturns   winpr_LeaveCriticalSectionWhenCallbackReturns
#define ReleaseMutexWhenCallbackReturns   winpr_ReleaseMutexWhenCallbackReturns
#define ReleaseSemaphoreWhenCallbackReturns   winpr_ReleaseSemaphoreWhenCallbackReturns
#define SetEventWhenCallbackReturns   winpr_SetEventWhenCallbackReturns
#define SetThreadpoolCallbackCleanupGroup   winpr_SetThreadpoolCallbackCleanupGroup
#define SetThreadpoolThreadMaximum   winpr_SetThreadpoolThreadMaximum
#define SetThreadpoolThreadMinimum   winpr_SetThreadpoolThreadMinimum
#define SetThreadpoolTimer   winpr_SetThreadpoolTimer
#define SetThreadpoolWait   winpr_SetThreadpoolWait
#define StartThreadpoolIo   winpr_StartThreadpoolIo
#define SubmitThreadpoolWork   winpr_SubmitThreadpoolWork
#define TrySubmitThreadpoolCallback   winpr_TrySubmitThreadpoolCallback
#define WaitForThreadpoolIoCallbacks   winpr_WaitForThreadpoolIoCallbacks
#define WaitForThreadpoolTimerCallbacks   winpr_WaitForThreadpoolTimerCallbacks
#define WaitForThreadpoolWaitCallbacks   winpr_WaitForThreadpoolWaitCallbacks
#define WaitForThreadpoolWorkCallbacks   winpr_WaitForThreadpoolWorkCallbacks
#define WINPR_THREAD_POOL   1

Typedef Documentation

typedef VOID(* PTP_CLEANUP_GROUP_CANCEL_CALLBACK) (PVOID ObjectContext, PVOID CleanupContext)
typedef VOID(* PTP_SIMPLE_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context)
typedef VOID(* PTP_TIMER_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_TIMER Timer)
typedef DWORD * PTP_VERSION
typedef VOID(* PTP_WAIT_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WAIT Wait, TP_WAIT_RESULT WaitResult)
typedef VOID(* PTP_WIN32_IO_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PVOID Overlapped, ULONG IoResult, ULONG_PTR NumberOfBytesTransferred, PTP_IO Io)
typedef VOID(* PTP_WORK_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work)
typedef DWORD TP_VERSION

WinPR: Windows Portable Runtime Thread Pool API

Copyright 2012 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

typedef DWORD TP_WAIT_RESULT

Function Documentation

static INLINE VOID DestroyThreadpoolEnvironment ( PTP_CALLBACK_ENVIRON  pcbe)
static

Here is the caller graph for this function:

static INLINE VOID InitializeThreadpoolEnvironment ( PTP_CALLBACK_ENVIRON  pcbe)
static

Here is the caller graph for this function:

static INLINE VOID SetThreadpoolCallbackLibrary ( PTP_CALLBACK_ENVIRON  pcbe,
PVOID  mod 
)
static

Here is the call graph for this function:

static INLINE VOID SetThreadpoolCallbackPool ( PTP_CALLBACK_ENVIRON  pcbe,
PTP_POOL  ptpp 
)
static

Here is the caller graph for this function:

static INLINE VOID SetThreadpoolCallbackRunsLong ( PTP_CALLBACK_ENVIRON  pcbe)
static
WINPR_API BOOL winpr_CallbackMayRunLong ( PTP_CALLBACK_INSTANCE  pci)

Here is the caller graph for this function:

WINPR_API VOID winpr_CancelThreadpoolIo ( PTP_IO  pio)
WINPR_API VOID winpr_CloseThreadpool ( PTP_POOL  ptpp)
WINPR_API VOID winpr_CloseThreadpoolCleanupGroup ( PTP_CLEANUP_GROUP  ptpcg)
WINPR_API VOID winpr_CloseThreadpoolCleanupGroupMembers ( PTP_CLEANUP_GROUP  ptpcg,
BOOL  fCancelPendingCallbacks,
PVOID  pvCleanupContext 
)
WINPR_API VOID winpr_CloseThreadpoolIo ( PTP_IO  pio)
WINPR_API VOID winpr_CloseThreadpoolTimer ( PTP_TIMER  pti)
WINPR_API VOID winpr_CloseThreadpoolWait ( PTP_WAIT  pwa)
WINPR_API VOID winpr_CloseThreadpoolWork ( PTP_WORK  pwk)
WINPR_API PTP_POOL winpr_CreateThreadpool ( PVOID  reserved)
WINPR_API PTP_CLEANUP_GROUP winpr_CreateThreadpoolCleanupGroup ( void  )
WINPR_API PTP_IO winpr_CreateThreadpoolIo ( HANDLE  fl,
PTP_WIN32_IO_CALLBACK  pfnio,
PVOID  pv,
PTP_CALLBACK_ENVIRON  pcbe 
)
WINPR_API PTP_TIMER winpr_CreateThreadpoolTimer ( PTP_TIMER_CALLBACK  pfnti,
PVOID  pv,
PTP_CALLBACK_ENVIRON  pcbe 
)
WINPR_API PTP_WAIT winpr_CreateThreadpoolWait ( PTP_WAIT_CALLBACK  pfnwa,
PVOID  pv,
PTP_CALLBACK_ENVIRON  pcbe 
)
WINPR_API PTP_WORK winpr_CreateThreadpoolWork ( PTP_WORK_CALLBACK  pfnwk,
PVOID  pv,
PTP_CALLBACK_ENVIRON  pcbe 
)
WINPR_API VOID winpr_DisassociateCurrentThreadFromCallback ( PTP_CALLBACK_INSTANCE  pci)

Here is the caller graph for this function:

WINPR_API VOID winpr_FreeLibraryWhenCallbackReturns ( PTP_CALLBACK_INSTANCE  pci,
HMODULE  mod 
)

Here is the caller graph for this function:

WINPR_API BOOL winpr_IsThreadpoolTimerSet ( PTP_TIMER  pti)
WINPR_API VOID winpr_LeaveCriticalSectionWhenCallbackReturns ( PTP_CALLBACK_INSTANCE  pci,
PCRITICAL_SECTION  pcs 
)

Here is the caller graph for this function:

WINPR_API VOID winpr_ReleaseMutexWhenCallbackReturns ( PTP_CALLBACK_INSTANCE  pci,
HANDLE  mut 
)

Here is the caller graph for this function:

WINPR_API VOID winpr_ReleaseSemaphoreWhenCallbackReturns ( PTP_CALLBACK_INSTANCE  pci,
HANDLE  sem,
DWORD  crel 
)

Here is the caller graph for this function:

WINPR_API VOID winpr_SetEventWhenCallbackReturns ( PTP_CALLBACK_INSTANCE  pci,
HANDLE  evt 
)

Here is the caller graph for this function:

WINPR_API VOID winpr_SetThreadpoolCallbackCleanupGroup ( PTP_CALLBACK_ENVIRON  pcbe,
PTP_CLEANUP_GROUP  ptpcg,
PTP_CLEANUP_GROUP_CANCEL_CALLBACK  pfng 
)
WINPR_API VOID winpr_SetThreadpoolThreadMaximum ( PTP_POOL  ptpp,
DWORD  cthrdMost 
)
WINPR_API BOOL winpr_SetThreadpoolThreadMinimum ( PTP_POOL  ptpp,
DWORD  cthrdMic 
)
WINPR_API VOID winpr_SetThreadpoolTimer ( PTP_TIMER  pti,
PFILETIME  pftDueTime,
DWORD  msPeriod,
DWORD  msWindowLength 
)
WINPR_API VOID winpr_SetThreadpoolWait ( PTP_WAIT  pwa,
HANDLE  h,
PFILETIME  pftTimeout 
)
WINPR_API VOID winpr_StartThreadpoolIo ( PTP_IO  pio)
WINPR_API VOID winpr_SubmitThreadpoolWork ( PTP_WORK  pwk)
WINPR_API BOOL winpr_TrySubmitThreadpoolCallback ( PTP_SIMPLE_CALLBACK  pfns,
PVOID  pv,
PTP_CALLBACK_ENVIRON  pcbe 
)
WINPR_API VOID winpr_WaitForThreadpoolIoCallbacks ( PTP_IO  pio,
BOOL  fCancelPendingCallbacks 
)
WINPR_API VOID winpr_WaitForThreadpoolTimerCallbacks ( PTP_TIMER  pti,
BOOL  fCancelPendingCallbacks 
)
WINPR_API VOID winpr_WaitForThreadpoolWaitCallbacks ( PTP_WAIT  pwa,
BOOL  fCancelPendingCallbacks 
)
WINPR_API VOID winpr_WaitForThreadpoolWorkCallbacks ( PTP_WORK  pwk,
BOOL  fCancelPendingCallbacks 
)