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@xxxxxxxxxxxxxxxxxx> > --- > 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list