Add information about GIC capabilities to virDomainCaps and update
the formatter to include them in the XML output.
---
src/conf/domain_capabilities.c | 20 ++++++++++++++++++++
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, 39 insertions(+)
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index 466c0c6..d29ed81 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -262,6 +262,18 @@ virDomainCapsDeviceHostdevFormat(virBufferPtr buf,
}
+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 +303,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