]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Expose GIC capabilities
authorAndrea Bolognani <abologna@redhat.com>
Wed, 9 Mar 2016 17:28:59 +0000 (18:28 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Wed, 20 Apr 2016 10:52:41 +0000 (12:52 +0200)
Add information about GIC capabilities to virDomainCaps and update
the formatter to include them in the XML output.

src/conf/domain_capabilities.c
src/conf/domain_capabilities.h
tests/domaincapsschemadata/domaincaps-basic.xml
tests/domaincapsschemadata/domaincaps-full.xml
tests/domaincapsschemadata/domaincaps-qemu_1.6.50-1.xml

index 466c0c61721610b235626455ce43326e49122a03..eb880ae389014e488dbe1446a24e556604f26970 100644 (file)
@@ -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;
index 3eacb357f0ebb9cbabd4b044c6230fab746be741..95afe5e83473cc8ff8d5c4cf0dbf26b721ef2403 100644 (file)
@@ -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,
index 6171393968d9bdbe59fd1c723bb40052d5e28985..6587d56a704eba2e5a240ddc78bc7bce0688491b 100644 (file)
@@ -8,4 +8,7 @@
     <disk supported='no'/>
     <hostdev supported='no'/>
   </devices>
+  <features>
+    <gic supported='no'/>
+  </features>
 </domainCapabilities>
index 96202bca6d0bfdd0033b1d72995b648b0d76c359..d4f91fa600511e2c201fd63462d976821fed7d9e 100644 (file)
@@ -68,4 +68,7 @@
       </enum>
     </hostdev>
   </devices>
+  <features>
+    <gic supported='no'/>
+  </features>
 </domainCapabilities>
index 37d21027238fc19cfec020e103e0b0008050c5a9..990661bf38e91a56204e8c555f0b3339b76bb020 100644 (file)
@@ -56,4 +56,7 @@
       </enum>
     </hostdev>
   </devices>
+  <features>
+    <gic supported='no'/>
+  </features>
 </domainCapabilities>