[libvirt] [PATCH v2 2/4] conf: add optional attribte primary to video <model> element

Eric Blake eblake at redhat.com
Tue Dec 11 18:11:20 UTC 2012


On 12/11/2012 07:14 AM, Guannan Ren wrote:
> If there are multiple video devices
> primary = 'yes' marks this video device as the primary one.
> The rest are secondary video devices. No more than one could be
> mark as primary. If none of them has primary attribute, the first
> one will be the primary by default like what it was.
> The reason of this changing is that for qemu, only one primary video
> device is permitted which can be of any type. For secondary video
> devices, only qxl is allowd. Primary attribute removes the restriction
> that the first have to be the primary one.
> 
> We always put the primary video device into the first position of
> video device structure array after parsing.
> ---
>  src/conf/domain_conf.c | 25 +++++++++++++++++++++++++
>  src/conf/domain_conf.h |  1 +
>  2 files changed, 26 insertions(+)

Incomplete.  I can't approve this without a change to
docs/schemas/domaincommon.rng to parse the new attribute, and to
docs/formatdomain.html.in to document it.

> @@ -7289,6 +7290,11 @@ virDomainVideoDefParseXML(const xmlNodePtr node,
>                  type = virXMLPropString(cur, "type");
>                  vram = virXMLPropString(cur, "vram");
>                  heads = virXMLPropString(cur, "heads");
> +
> +                if ((primary = virXMLPropString(cur, "primary"))!= NULL)

Space before !=.

> @@ -9961,6 +9968,22 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
>                                                                 flags);
>          if (!video)
>              goto error;
> +
> +        if (!primaryVideo && video->primary) {
> +            if (def->nvideos != 0)
> +                memmove(def->videos + 1,
> +                        def->videos,
> +                        (sizeof(def->videos[0]) * def->nvideos));
> +
> +            def->videos[0] = video;
> +            def->nvideos++;
> +            primaryVideo = true;

This would be a good candidate to use Laine's new VIR_INSERT_ELEMENT macro.

> +++ b/src/conf/domain_conf.h
> @@ -1120,6 +1120,7 @@ struct _virDomainVideoDef {
>      int type;
>      unsigned int vram;
>      unsigned int heads;
> +    unsigned int primary : 1;

It's probably easier to use 'bool primary' instead of a bitfield here.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20121211/a8ac346f/attachment-0001.sig>


More information about the libvir-list mailing list