[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