[libvirt] [PATCH 4/7] conf: Expose GIC capabilities

Andrea Bolognani abologna at redhat.com
Mon Apr 18 17:44:00 UTC 2016


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




More information about the libvir-list mailing list