Add information about GIC capabilities to virDomainCaps and update the formatter to include them in the XML output. --- src/conf/domain_capabilities.c | 36 ++++++++++++++++++++++ src/conf/domain_capabilities.h | 10 ++++++ tests/domaincapsschemadata/domaincaps-basic.xml | 3 ++ tests/domaincapsschemadata/domaincaps-full.xml | 3 ++ .../domaincaps-qemu_1.6.50-1.xml | 3 ++ 5 files changed, 55 insertions(+) diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 466c0c6..eb880ae 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -262,6 +262,34 @@ virDomainCapsDeviceHostdevFormat(virBufferPtr buf, } +/** + * virDomainCapsFeatureGICFormat: + * @buf: target buffer + * @gic: GIC features + * + * Format GIC features for inclusion in the domcapabilities XML. + * + * The resulting XML will look like + * + * <gic supported='yes'> + * <enum name='version> + * <value>2</value> + * <value>3</value> + * </enum> + * </gic> + */ +static void +virDomainCapsFeatureGICFormat(virBufferPtr buf, + virDomainCapsFeatureGICPtr const gic) +{ + FORMAT_PROLOGUE(gic); + + ENUM_PROCESS(gic, version, virGICVersionTypeToString); + + FORMAT_EPILOGUE(gic); +} + + static int virDomainCapsFormatInternal(virBufferPtr buf, virDomainCapsPtr const caps) @@ -291,6 +319,14 @@ virDomainCapsFormatInternal(virBufferPtr buf, virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "</devices>\n"); + virBufferAddLit(buf, "<features>\n"); + virBufferAdjustIndent(buf, 2); + + virDomainCapsFeatureGICFormat(buf, &caps->gic); + + virBufferAdjustIndent(buf, -2); + virBufferAddLit(buf, "</features>\n"); + virBufferAdjustIndent(buf, -2); virBufferAddLit(buf, "</domainCapabilities>\n"); return 0; diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index 3eacb35..95afe5e 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -81,6 +81,13 @@ struct _virDomainCapsDeviceHostdev { /* add new fields here */ }; +typedef struct _virDomainCapsFeatureGIC virDomainCapsFeatureGIC; +typedef virDomainCapsFeatureGIC *virDomainCapsFeatureGICPtr; +struct _virDomainCapsFeatureGIC { + bool supported; + virDomainCapsEnum version; /* Info about virGICVersion */ +}; + struct _virDomainCaps { virObjectLockable parent; @@ -96,6 +103,9 @@ struct _virDomainCaps { virDomainCapsDeviceDisk disk; virDomainCapsDeviceHostdev hostdev; /* add new domain devices here */ + + virDomainCapsFeatureGIC gic; + /* add new domain features here */ }; virDomainCapsPtr virDomainCapsNew(const char *path, diff --git a/tests/domaincapsschemadata/domaincaps-basic.xml b/tests/domaincapsschemadata/domaincaps-basic.xml index 6171393..6587d56 100644 --- a/tests/domaincapsschemadata/domaincaps-basic.xml +++ b/tests/domaincapsschemadata/domaincaps-basic.xml @@ -8,4 +8,7 @@ <disk supported='no'/> <hostdev supported='no'/> </devices> + <features> + <gic supported='no'/> + </features> </domainCapabilities> diff --git a/tests/domaincapsschemadata/domaincaps-full.xml b/tests/domaincapsschemadata/domaincaps-full.xml index 96202bc..d4f91fa 100644 --- a/tests/domaincapsschemadata/domaincaps-full.xml +++ b/tests/domaincapsschemadata/domaincaps-full.xml @@ -68,4 +68,7 @@ </enum> </hostdev> </devices> + <features> + <gic supported='no'/> + </features> </domainCapabilities> diff --git a/tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml b/tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml index 37d2102..990661b 100644 --- a/tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml +++ b/tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml @@ -56,4 +56,7 @@ </enum> </hostdev> </devices> + <features> + <gic supported='no'/> + </features> </domainCapabilities> -- 2.5.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list