diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 61fc5004bbb7b96c89eaf1681872e5a04a1ea15b..6d90eca6758f620f04cd274113856277a0527a2e 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2365,6 +2365,9 @@ virThreadJobSetWorker; # util/virthreadpool.h virThreadPoolFree; +virThreadPoolGetCurrentWorkers; +virThreadPoolGetFreeWorkers; +virThreadPoolGetJobQueueDepth; virThreadPoolGetMaxWorkers; virThreadPoolGetMinWorkers; virThreadPoolGetPriorityWorkers; diff --git a/src/util/virthreadpool.c b/src/util/virthreadpool.c index 7ceb090a998b80fc5b76576e1ed8edf6c504563b..fec8620c10bb84059d243f9c2fed64438af3944d 100644 --- a/src/util/virthreadpool.c +++ b/src/util/virthreadpool.c @@ -317,6 +317,39 @@ size_t virThreadPoolGetPriorityWorkers(virThreadPoolPtr pool) return ret; } +size_t virThreadPoolGetCurrentWorkers(virThreadPoolPtr pool) +{ + size_t ret; + + virMutexLock(&pool->mutex); + ret = pool->nWorkers; + virMutexUnlock(&pool->mutex); + + return ret; +} + +size_t virThreadPoolGetFreeWorkers(virThreadPoolPtr pool) +{ + size_t ret; + + virMutexLock(&pool->mutex); + ret = pool->freeWorkers; + virMutexUnlock(&pool->mutex); + + return ret; +} + +size_t virThreadPoolGetJobQueueDepth(virThreadPoolPtr pool) +{ + size_t ret; + + virMutexLock(&pool->mutex); + ret = pool->jobQueueDepth; + virMutexUnlock(&pool->mutex); + + return ret; +} + /* * @priority - job priority * Return: 0 on success, -1 otherwise diff --git a/src/util/virthreadpool.h b/src/util/virthreadpool.h index 538b62fb1a61cea948559ddf10ea0448b921796f..bc0c90771be02f6fd81993ad0f0743ca0cea85d1 100644 --- a/src/util/virthreadpool.h +++ b/src/util/virthreadpool.h @@ -46,6 +46,9 @@ virThreadPoolPtr virThreadPoolNewFull(size_t minWorkers, size_t virThreadPoolGetMinWorkers(virThreadPoolPtr pool); size_t virThreadPoolGetMaxWorkers(virThreadPoolPtr pool); size_t virThreadPoolGetPriorityWorkers(virThreadPoolPtr pool); +size_t virThreadPoolGetCurrentWorkers(virThreadPoolPtr pool); +size_t virThreadPoolGetFreeWorkers(virThreadPoolPtr pool); +size_t virThreadPoolGetJobQueueDepth(virThreadPoolPtr pool); void virThreadPoolFree(virThreadPoolPtr pool);