Likewise Base Runtime Library
|
Thread pool API. More...
#include <lw/types.h>
#include <lw/attrs.h>
#include <signal.h>
Typedefs | |
typedef struct _LW_THREAD_POOL | LW_THREAD_POOL |
Thread pool. More... | |
typedef struct _LW_THREAD_POOL * | PLW_THREAD_POOL |
typedef struct _LW_TASK_GROUP | LW_TASK_GROUP |
Task group. More... | |
typedef struct _LW_TASK_GROUP * | PLW_TASK_GROUP |
typedef struct _LW_TASK | LW_TASK |
Task. More... | |
typedef struct _LW_TASK * | PLW_TASK |
typedef struct _LW_THREAD_POOL_ATTRIBUTES | LW_THREAD_POOL_ATTRIBUTES |
Thread pool attributes. More... | |
typedef struct _LW_THREAD_POOL_ATTRIBUTES * | PLW_THREAD_POOL_ATTRIBUTES |
typedef enum _LW_TASK_EVENT_MASK * | PLW_TASK_EVENT_MASK |
typedef struct _LW_WORK_ITEM | LW_WORK_ITEM |
Work item structure. More... | |
typedef struct _LW_WORK_ITEM * | PLW_WORK_ITEM |
typedef LW_VOID(* | LW_TASK_FUNCTION )(LW_IN PLW_TASK pTask, LW_IN LW_PVOID pContext, LW_IN LW_TASK_EVENT_MASK WakeMask, LW_IN LW_OUT LW_TASK_EVENT_MASK *pWaitMask, LW_IN LW_OUT LW_LONG64 *pllTime) |
Main task function. More... | |
typedef LW_VOID(* | LW_WORK_ITEM_FUNCTION )(PLW_WORK_ITEM pWorkItem, PVOID pContext) |
Work item function. More... | |
Functions | |
LW_NTSTATUS | LwRtlCreateTask (LW_IN PLW_THREAD_POOL pPool, LW_OUT PLW_TASK *ppTask, LW_IN LW_OPTIONAL PLW_TASK_GROUP pGroup, LW_IN LW_TASK_FUNCTION pfnFunc, LW_IN LW_PVOID pContext) |
Create a new task. More... | |
LW_NTSTATUS | LwRtlCreateTaskGroup (LW_IN PLW_THREAD_POOL pPool, LW_OUT PLW_TASK_GROUP *ppGroup) |
Create a new task group. More... | |
LW_VOID | LwRtlReleaseTask (LW_IN LW_OUT PLW_TASK *ppTask) |
Release task. More... | |
LW_VOID | LwRtlFreeTaskGroup (LW_IN LW_OUT PLW_TASK_GROUP *ppGroup) |
Free task group. More... | |
LW_NTSTATUS | LwRtlSetTaskFd (LW_IN PLW_TASK pTask, LW_IN int Fd, LW_IN LW_TASK_EVENT_MASK Mask) |
Configure file descriptor for wakeup events. More... | |
LW_NTSTATUS | LwRtlQueryTaskFd (LW_IN PLW_TASK pTask, LW_IN int Fd, LW_OUT PLW_TASK_EVENT_MASK pMask) |
Query file descriptor trigger mask. More... | |
LW_NTSTATUS | LwRtlSetTaskUnixSignal (LW_IN PLW_TASK pTask, LW_IN int Sig, LW_IN LW_BOOLEAN bSubscribe) |
Configure UNIX signal wakeup events. More... | |
LW_BOOLEAN | LwRtlNextTaskUnixSignal (LW_IN PLW_TASK pTask, LW_OUT siginfo_t *pInfo) |
Get next UNIX signal delivered to task. More... | |
LW_VOID | LwRtlWakeTask (LW_IN PLW_TASK pTask) |
Manually wake task. More... | |
LW_VOID | LwRtlCancelTask (LW_IN PLW_TASK pTask) |
Cancel task. More... | |
LW_VOID | LwRtlWaitTask (LW_IN PLW_TASK pTask) |
Wait for task completion. More... | |
LW_VOID | LwRtlWakeTaskGroup (LW_IN PLW_TASK_GROUP pGroup) |
Wake task group. More... | |
LW_VOID | LwRtlCancelTaskGroup (LW_IN PLW_TASK_GROUP pGroup) |
Cancel task group. More... | |
LW_VOID | LwRtlWaitTaskGroup (LW_IN PLW_TASK_GROUP pGroup) |
Wait for task group to complete. More... | |
LW_NTSTATUS | LwRtlCreateWorkItem (LW_IN PLW_THREAD_POOL pPool, LW_OUT PLW_WORK_ITEM *ppWorkItem, LW_IN LW_WORK_ITEM_FUNCTION pfnFunc, LW_IN PVOID pContext) |
Create work item. More... | |
LW_VOID | LwRtlFreeWorkItem (LW_IN LW_OUT PLW_WORK_ITEM *ppWorkItem) |
Free work item. More... | |
LW_VOID | LwRtlScheduleWorkItem (LW_IN PLW_WORK_ITEM pWorkItem, LW_IN LW_SCHEDULE_FLAGS Flags) |
Schedule blocking work item. More... | |
LW_VOID | LwRtlWaitWorkItems (LW_IN PLW_THREAD_POOL pPool) |
Wait for scheduled work items to complete. More... | |
LW_NTSTATUS | LwRtlCreateThreadPoolAttributes (LW_OUT PLW_THREAD_POOL_ATTRIBUTES *ppAttrs) |
Create thread pool attributes structure. More... | |
LW_NTSTATUS | LwRtlSetThreadPoolAttribute (LW_IN LW_OUT PLW_THREAD_POOL_ATTRIBUTES pAttrs, LW_IN LW_THREAD_POOL_OPTION Option,...) |
Set thread pool attribute. More... | |
VOID | LwRtlFreeThreadPoolAttributes (LW_IN LW_OUT PLW_THREAD_POOL_ATTRIBUTES *ppAttrs) |
Free thread pool attributes. More... | |
LW_NTSTATUS | LwRtlCreateThreadPool (LW_OUT PLW_THREAD_POOL *ppPool, LW_IN LW_OPTIONAL PLW_THREAD_POOL_ATTRIBUTES pAttrs) |
Create new thread pool. More... | |
LW_VOID | LwRtlFreeThreadPool (LW_IN LW_OUT PLW_THREAD_POOL *ppPool) |
Free thread pool. More... | |
LW_NTSTATUS | LwRtlMain (LW_VOID) |
Main signal loop. More... | |
LW_VOID | LwRtlExitMain (LW_NTSTATUS Status) |
Exit main loop. More... | |
LW_NTSTATUS | LwRtlBlockSignals (VOID) |
Block all signals in the current thread. More... | |