From: Daniel P. Berrange Date: Thu, 9 Aug 2012 10:48:17 +0000 (+0100) Subject: Add APIs for virThreadPoolPtr to query some config params X-Git-Tag: v0.10.0-rc1~119 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2241582c6a306e42d8cd86f88b3d19927eed2b9f;p=thirdparty%2Flibvirt.git Add APIs for virThreadPoolPtr to query some config params It is desirable to be able to query the config params of the thread pool, in order to save the server state. Add virThreadPoolGetMinWorkers, virThreadPoolGetMaxWorkers and virThreadPoolGetPriorityWorkers APIs. Signed-off-by: Daniel P. Berrange --- diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 4c4a9bd08b..649f2c308c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1086,6 +1086,9 @@ virSysinfoRead; virThreadPoolFree; virThreadPoolNew; virThreadPoolSendJob; +virThreadPoolGetMinWorkers; +virThreadPoolGetMaxWorkers; +virThreadPoolGetPriorityWorkers; # threads.h diff --git a/src/util/threadpool.c b/src/util/threadpool.c index 63c5ea0c15..2ae11b8b8a 100644 --- a/src/util/threadpool.c +++ b/src/util/threadpool.c @@ -66,6 +66,7 @@ struct _virThreadPool { virCond quit_cond; size_t maxWorkers; + size_t minWorkers; size_t freeWorkers; size_t nWorkers; virThreadPtr workers; @@ -188,7 +189,9 @@ virThreadPoolPtr virThreadPoolNew(size_t minWorkers, if (VIR_ALLOC_N(pool->workers, minWorkers) < 0) goto error; + pool->minWorkers = minWorkers; pool->maxWorkers = maxWorkers; + for (i = 0; i < minWorkers; i++) { if (VIR_ALLOC(data) < 0) { virReportOOMError(); @@ -277,6 +280,22 @@ void virThreadPoolFree(virThreadPoolPtr pool) VIR_FREE(pool); } + +size_t virThreadPoolGetMinWorkers(virThreadPoolPtr pool) +{ + return pool->minWorkers; +} + +size_t virThreadPoolGetMaxWorkers(virThreadPoolPtr pool) +{ + return pool->maxWorkers; +} + +size_t virThreadPoolGetPriorityWorkers(virThreadPoolPtr pool) +{ + return pool->nPrioWorkers; +} + /* * @priority - job priority * Return: 0 on success, -1 otherwise diff --git a/src/util/threadpool.h b/src/util/threadpool.h index 894b2783e2..798fd0b7f7 100644 --- a/src/util/threadpool.h +++ b/src/util/threadpool.h @@ -39,6 +39,10 @@ virThreadPoolPtr virThreadPoolNew(size_t minWorkers, virThreadPoolJobFunc func, void *opaque) ATTRIBUTE_NONNULL(4); +size_t virThreadPoolGetMinWorkers(virThreadPoolPtr pool); +size_t virThreadPoolGetMaxWorkers(virThreadPoolPtr pool); +size_t virThreadPoolGetPriorityWorkers(virThreadPoolPtr pool); + void virThreadPoolFree(virThreadPoolPtr pool); int virThreadPoolSendJob(virThreadPoolPtr pool,