2019-01-04 15:12:51 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <libvirt/libvirt-admin.h>
|
2016-05-15 14:04:51 +00:00
|
|
|
|
|
|
|
int main(int argc, char **argv)
|
|
|
|
{
|
|
|
|
int ret = -1;
|
|
|
|
virAdmConnectPtr conn = NULL;
|
|
|
|
virAdmServerPtr srv = NULL; /* which server to work with */
|
|
|
|
virTypedParameterPtr params = NULL;
|
|
|
|
int nparams = 0;
|
2019-04-02 09:57:19 +00:00
|
|
|
int maxparams = 0;
|
2016-12-20 09:29:52 +00:00
|
|
|
ssize_t i;
|
2016-05-15 14:04:51 +00:00
|
|
|
|
|
|
|
if (argc != 2) {
|
|
|
|
fprintf(stderr, "One argument specifying the server which to work "
|
|
|
|
"with is expected\n");
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* first, open a connection to the daemon */
|
|
|
|
if (!(conn = virAdmConnectOpen(NULL, 0)))
|
|
|
|
goto cleanup;
|
|
|
|
|
|
|
|
/* a server handle is necessary before any API regarding threadpool
|
|
|
|
* parameters can be issued
|
|
|
|
*/
|
|
|
|
if (!(srv = virAdmConnectLookupServer(conn, argv[1], 0)))
|
|
|
|
goto cleanup;
|
|
|
|
|
|
|
|
/* get the current threadpool parameters */
|
|
|
|
if (virAdmServerGetThreadPoolParameters(srv, ¶ms, &nparams, 0) < 0)
|
|
|
|
goto cleanup;
|
|
|
|
|
|
|
|
for (i = 0; i < nparams; i++)
|
|
|
|
printf("%-15s: %d\n", params[i].field, params[i].value.ui);
|
|
|
|
|
|
|
|
virTypedParamsFree(params, nparams);
|
|
|
|
params = NULL;
|
|
|
|
nparams = 0;
|
|
|
|
|
|
|
|
/* let's set minWorkers to 10, maxWorkers to 15 and prioWorkers to 10 */
|
|
|
|
if (virTypedParamsAddUInt(¶ms, &nparams, &maxparams,
|
|
|
|
VIR_THREADPOOL_WORKERS_MIN, 10) < 0 ||
|
|
|
|
virTypedParamsAddUInt(¶ms, &nparams, &maxparams,
|
|
|
|
VIR_THREADPOOL_WORKERS_MAX, 15) < 0 ||
|
|
|
|
virTypedParamsAddUInt(¶ms, &nparams, &maxparams,
|
|
|
|
VIR_THREADPOOL_WORKERS_PRIORITY, 10) < 0)
|
|
|
|
goto cleanup;
|
|
|
|
|
|
|
|
/* now, change the threadpool settings to some different values */
|
|
|
|
if (virAdmServerSetThreadPoolParameters(srv, params, nparams, 0) < 0)
|
|
|
|
goto cleanup;
|
|
|
|
|
|
|
|
ret = 0;
|
|
|
|
cleanup:
|
|
|
|
virTypedParamsFree(params, nparams);
|
|
|
|
|
|
|
|
/* Once finished deallocate the server handle and close the connection
|
|
|
|
* properly, @conn will be deallocated automatically
|
|
|
|
*/
|
|
|
|
virAdmServerFree(srv);
|
|
|
|
virAdmConnectClose(conn);
|
|
|
|
return ret;
|
|
|
|
}
|