[libvirt] [PATCH 02/12] Adding structure for virDomainSetMemoryParameter
Daniel P. Berrange
berrange at redhat.com
Tue Sep 21 17:12:29 UTC 2010
On Mon, Sep 20, 2010 at 02:15:23PM +0530, Nikunj A. Dadhania wrote:
> This patch adds a structure virMemoryParameter, it contains the name of the
> parameter and the type of the parameter along with a union.
>
> Signed-off-by: Nikunj A. Dadhania <nikunj at linux.vnet.ibm.com>
> ---
> include/libvirt/libvirt.h.in | 51 ++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 51 insertions(+), 0 deletions(-)
>
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index f546ba6..8beedeb 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -674,6 +674,57 @@ int virDomainGetInfo (virDomainPtr domain,
> char * virDomainGetSchedulerType(virDomainPtr domain,
> int *nparams);
>
> +/**
> + * virDomainMemoryParameterType:
> + *
> + * A memory parameter field type
> + */
> +typedef enum {
> + VIR_DOMAIN_MEMORY_FIELD_INT = 1, /* integer case */
> + VIR_DOMAIN_MEMORY_FIELD_UINT = 2, /* unsigned integer case */
> + VIR_DOMAIN_MEMORY_FIELD_LLONG = 3, /* long long case */
> + VIR_DOMAIN_MEMORY_FIELD_ULLONG = 4, /* unsigned long long case */
> + VIR_DOMAIN_MEMORY_FIELD_DOUBLE = 5, /* double case */
> + VIR_DOMAIN_MEMORY_FIELD_BOOLEAN = 6 /* boolean(character) case */
> +} virMemoryParameterType;
> +
> +/**
> + * VIR_DOMAIN_MEMORY_FIELD_LENGTH:
> + *
> + * Macro providing the field length of virMemoryParameter
> + */
> +
> +#define VIR_DOMAIN_MEMORY_FIELD_LENGTH 80
> +
> +/**
> + * virDomainMemoryParameter:
> + *
> + * a virDomainMemoryParameter is the set of scheduler parameters
> + */
> +
> +typedef struct _virMemoryParameter virMemoryParameter;
> +
> +struct _virMemoryParameter {
> + char field[VIR_DOMAIN_MEMORY_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 */
> +};
With the schedular parameters API we gave up and decided that each
HV would be different for 'field', so used string parameters. I wonder
if we could use an enum for memory parameters, or keep this char[] as
extensible for HV specific memory tuning params? Perhaps its worth
keeping like this just for consistent usage with _virSchedParameter
If we keep strings, then we should probably #define some constants
for the well-known tunables.
eg #define VIR_DOMAIN_MEMORY_MAX_BALLOON "max-balloon"
Oh, BTW this patch should be merged with the previous patch. The idea with
a series of patches, is that the code should successfully compile after
each individual patch is applied. The previous patch has a compile time
dependancy on this patch, thus they need merging, or reversing in order
Regards,
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list