[libvirt] [PATCHv3 01/27] virCaps: conf: start splitting out irrelevat data

Daniel P. Berrange berrange at redhat.com
Tue Mar 12 12:06:48 UTC 2013


On Mon, Mar 11, 2013 at 04:06:12PM +0100, Peter Krempa wrote:
> The virCaps structure gathered a ton of irrelevant data over time that.
> The original reason is that it was propagated to the XML parser
> functions.
> 
> This patch aims to create a new data structure virDomainXMLConf that
> will contain immutable data that are used by the XML parser. This will
> allow two things we need:
> 
> 1) Get rid of the stuff from virCaps
> 
> 2) Allow us to add callbacks to check and add driver specific stuff
> after domain XML is parsed.
> 
> This first attempt removes pointers to private data allocation functions
> to this new structure and update all callers and function that require
> them.
> ---
> 
> Notes:
>     Version 3:
>     - Changed comment at the capabilities structure
>     - virDomainXMLConfGetNamespace now returns a pointer instead of struct
>     - use virDomainXMLPrivateDataCallbacks instead of separate pointers
>     - even more fallout fixed in driver's I wasn't compiling originaly
>     Version 2:
>     - complete rewrite
> 
>  src/conf/capabilities.h |  8 ++----
>  src/conf/domain_conf.c  | 71 +++++++++++++++++++++++++++++++++++++++++++++++++
>  src/conf/domain_conf.h  | 27 +++++++++++++++++++
>  3 files changed, 100 insertions(+), 6 deletions(-)

> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 717fc20..5bec673 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -736,6 +736,77 @@ static int virDomainObjOnceInit(void)
> 
>  VIR_ONCE_GLOBAL_INIT(virDomainObj)
> 
> +
> +/* This structure holds various callbacks and data needed
> + * while parsing and creating domain XMLs */
> +struct _virDomainXMLConf {
> +    virObject parent;
> +
> +    /* domain private data management callbacks */
> +    virDomainXMLPrivateDataCallbacks privateData;
> +
> +    /* XML namespace callbacks */
> +    virDomainXMLNamespace ns;
> + };
> +
> +
> +
> +static virClassPtr virDomainXMLConfClass;
> +
> +static int virDomainXMLConfOnceInit(void)
> +{
> +    if (!(virDomainXMLConfClass = virClassNew(virClassForObject(),
> +                                              "virDomainXMLConf",
> +                                              sizeof(virDomainXMLConf),
> +                                              NULL)))
> +        return -1;
> +
> +    return 0;
> +}
> +
> +VIR_ONCE_GLOBAL_INIT(virDomainXMLConf)

We already have a VIR_ONCE_GLOBAL_INIT(virDomainObj) in this file.
There is no need to have multiple global init fnuctions per file,
just put all the functionality in one.

ACK aside from that issue

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list