[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [RFC 4/6] conf: Expose GIC capabilities



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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]