From 13c528212291531e05d2a27209155ca5f41e13f7 Mon Sep 17 00:00:00 2001 From: Gui Jianfeng Date: Tue, 22 Feb 2011 13:30:33 +0800 Subject: [PATCH] libvirt: add virDomain{Get,Set}BlkioParameters Add virDomainSetBlkioParameters virDomainGetBlkioParameters Signed-off-by: Gui Jianfeng --- include/libvirt/libvirt.h.in | 67 +++++++++++++++++++++++++++++++++ python/generator.py | 2 + python/libvirt-override-api.xml | 12 ++++++ python/libvirt-override.c | 21 ++++++++++- 4 files changed, 101 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index 10f8966045..fbbf2ead66 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -676,6 +676,73 @@ int virDomainGetInfo (virDomainPtr domain, */ char * virDomainGetSchedulerType(virDomainPtr domain, int *nparams); +/** + * virDomainBlkioParameterType: + * + * A blkio parameter field type + */ +typedef enum { + VIR_DOMAIN_BLKIO_PARAM_INT = 1, /* integer case */ + VIR_DOMAIN_BLKIO_PARAM_UINT = 2, /* unsigned integer case */ + VIR_DOMAIN_BLKIO_PARAM_LLONG = 3, /* long long case */ + VIR_DOMAIN_BLKIO_PARAM_ULLONG = 4, /* unsigned long long case */ + VIR_DOMAIN_BLKIO_PARAM_DOUBLE = 5, /* double case */ + VIR_DOMAIN_BLKIO_PARAM_BOOLEAN = 6 /* boolean(character) case */ +} virBlkioParameterType; + +/** + * VIR_DOMAIN_BLKIO_FIELD_LENGTH: + * + * Macro providing the field length of virBlkioParameter + */ + +#define VIR_DOMAIN_BLKIO_FIELD_LENGTH 80 + +/** + * VIR_DOMAIN_BLKIO_WEIGHT: + * + * Macro for the Blkio tunable weight: it represents the io weight + * the guest can use. + */ + +#define VIR_DOMAIN_BLKIO_WEIGHT "weight" + +/** + * virDomainBlkioParameter: + * + * a virDomainBlkioParameter is the set of blkio parameters + */ + +typedef struct _virBlkioParameter virBlkioParameter; + +struct _virBlkioParameter { + char field[VIR_DOMAIN_BLKIO_FIELD_LENGTH]; /* parameter name */ + int type; /* parameter type */ + union { + int i; /* data for integer case */ + unsigned int ui; /* data for unsigned integer case */ + long long int l; /* data for long long integer case */ + unsigned long long int ul; /* data for unsigned long long integer case */ + double d; /* data for double case */ + char b; /* data for char case */ + } value; /* parameter value */ +}; + +/** + * virBlkioParameterPtr: + * + * a virBlkioParameterPtr is a pointer to a virBlkioParameter structure. + */ + +typedef virBlkioParameter *virBlkioParameterPtr; + +/* Set Blkio tunables for the domain*/ +int virDomainSetBlkioParameters(virDomainPtr domain, + virBlkioParameterPtr params, + int nparams, unsigned int flags); +int virDomainGetBlkioParameters(virDomainPtr domain, + virBlkioParameterPtr params, + int *nparams, unsigned int flags); /** * virDomainMemoryParameterType: diff --git a/python/generator.py b/python/generator.py index ee9dfe4dd1..6f4bb401b6 100755 --- a/python/generator.py +++ b/python/generator.py @@ -306,6 +306,8 @@ skip_impl = ( 'virDomainGetSchedulerType', 'virDomainGetSchedulerParameters', 'virDomainSetSchedulerParameters', + 'virDomainSetBlkioParameters', + 'virDomainGetBlkioParameters', 'virDomainSetMemoryParameters', 'virDomainGetMemoryParameters', 'virDomainGetVcpus', diff --git a/python/libvirt-override-api.xml b/python/libvirt-override-api.xml index f2096080eb..54deeb52d1 100644 --- a/python/libvirt-override-api.xml +++ b/python/libvirt-override-api.xml @@ -162,6 +162,18 @@ + + Change the blkio tunables + + + + + + Get the blkio parameters, the @params array will be filled with the values. + + + + Change the memory tunables diff --git a/python/libvirt-override.c b/python/libvirt-override.c index 4a03d72dc0..4a9b432d6c 100644 --- a/python/libvirt-override.c +++ b/python/libvirt-override.c @@ -4,7 +4,7 @@ * entry points where an automatically generated stub is * unpractical * - * Copyright (C) 2005, 2007-2010 Red Hat, Inc. + * Copyright (C) 2005, 2007-2011 Red Hat, Inc. * * Daniel Veillard */ @@ -371,6 +371,23 @@ libvirt_virDomainSetSchedulerParameters(PyObject *self ATTRIBUTE_UNUSED, return VIR_PY_INT_SUCCESS; } + + + +/* FIXME: This is a place holder for the implementation. */ +static PyObject * +libvirt_virDomainSetBlkioParameters(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args ATTRIBUTE_UNUSED) { + return VIR_PY_INT_FAIL; +} + +/* FIXME: This is a place holder for the implementation. */ +static PyObject * +libvirt_virDomainGetBlkioParameters(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args ATTRIBUTE_UNUSED) { + return VIR_PY_INT_FAIL; +} + /* FIXME: This is a place holder for the implementation. */ static PyObject * libvirt_virDomainSetMemoryParameters(PyObject *self ATTRIBUTE_UNUSED, @@ -3532,6 +3549,8 @@ static PyMethodDef libvirtMethods[] = { {(char *) "virDomainGetSchedulerType", libvirt_virDomainGetSchedulerType, METH_VARARGS, NULL}, {(char *) "virDomainGetSchedulerParameters", libvirt_virDomainGetSchedulerParameters, METH_VARARGS, NULL}, {(char *) "virDomainSetSchedulerParameters", libvirt_virDomainSetSchedulerParameters, METH_VARARGS, NULL}, + {(char *) "virDomainSetBlkioParameters", libvirt_virDomainSetBlkioParameters, METH_VARARGS, NULL}, + {(char *) "virDomainGetBlkioParameters", libvirt_virDomainGetBlkioParameters, METH_VARARGS, NULL}, {(char *) "virDomainSetMemoryParameters", libvirt_virDomainSetMemoryParameters, METH_VARARGS, NULL}, {(char *) "virDomainGetMemoryParameters", libvirt_virDomainGetMemoryParameters, METH_VARARGS, NULL}, {(char *) "virDomainGetVcpus", libvirt_virDomainGetVcpus, METH_VARARGS, NULL}, -- 2.47.2