}
+/**
+ * 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)
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;
/* add new fields here */
};
+typedef struct _virDomainCapsFeatureGIC virDomainCapsFeatureGIC;
+typedef virDomainCapsFeatureGIC *virDomainCapsFeatureGICPtr;
+struct _virDomainCapsFeatureGIC {
+ bool supported;
+ virDomainCapsEnum version; /* Info about virGICVersion */
+};
+
struct _virDomainCaps {
virObjectLockable parent;
virDomainCapsDeviceDisk disk;
virDomainCapsDeviceHostdev hostdev;
/* add new domain devices here */
+
+ virDomainCapsFeatureGIC gic;
+ /* add new domain features here */
};
virDomainCapsPtr virDomainCapsNew(const char *path,