node = ctxt->node;
ctxt->node = nodes[i];
if ((tmp = virXPathString("string(./@version)", ctxt))) {
- if (virStrToLong_uip(tmp, NULL, 10, &def->gic_version) < 0 ||
- def->gic_version == 0) {
+ if ((def->gic_version = virGICVersionTypeFromString(tmp)) < 0 ||
+ def->gic_version == VIR_GIC_VERSION_NONE) {
virReportError(VIR_ERR_XML_ERROR,
_("malformed gic version: %s"), tmp);
goto error;
/* GIC version */
if (src->gic_version != dst->gic_version) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("Source GIC version '%u' does not match destination '%u'"),
- src->gic_version, dst->gic_version);
+ _("Source GIC version '%s' does not match destination '%s'"),
+ virGICVersionTypeToString(src->gic_version),
+ virGICVersionTypeToString(dst->gic_version));
return false;
}
case VIR_DOMAIN_FEATURE_GIC:
if (def->features[i] == VIR_TRISTATE_SWITCH_ON) {
virBufferAddLit(buf, "<gic");
- if (def->gic_version)
- virBufferAsprintf(buf, " version='%u'",
- def->gic_version);
+ if (def->gic_version != VIR_GIC_VERSION_NONE)
+ virBufferAsprintf(buf, " version='%s'",
+ virGICVersionTypeToString(def->gic_version));
virBufferAddLit(buf, "/>\n");
}
break;
# include "virstoragefile.h"
# include "virseclabel.h"
# include "virprocess.h"
+# include "virgic.h"
/* forward declarations of all device types, required by
* virDomainDeviceDef
int hyperv_features[VIR_DOMAIN_HYPERV_LAST];
int kvm_features[VIR_DOMAIN_KVM_LAST];
unsigned int hyperv_spinlocks;
- unsigned int gic_version;
+ virGICVersion gic_version;
/* These options are of type virTristateSwitch: ON = keep, OFF = drop */
int caps_features[VIR_DOMAIN_CAPS_FEATURE_LAST];
virFirewallStartTransaction;
+# util/virgic.h
+virGICVersionTypeFromString;
+virGICVersionTypeToString;
+
+
# util/virhash.h
virHashAddEntry;
virHashAtomicNew;
#include "virtpm.h"
#include "virscsi.h"
#include "virnuma.h"
+#include "virgic.h"
#if defined(__linux__)
# include <linux/capability.h>
#endif
}
if (def->features[VIR_DOMAIN_FEATURE_GIC] == VIR_TRISTATE_SWITCH_ON) {
- if (def->gic_version) {
+ if (def->gic_version != VIR_GIC_VERSION_NONE) {
if ((def->os.arch != VIR_ARCH_ARMV7L &&
def->os.arch != VIR_ARCH_AARCH64) ||
(STRNEQ(def->os.machine, "virt") &&
/* 2 is the default, so we don't put it as option for
* backwards compatibility
*/
- if (def->gic_version != 2) {
+ if (def->gic_version != VIR_GIC_VERSION_2) {
if (!virQEMUCapsGet(qemuCaps,
QEMU_CAPS_MACH_VIRT_GIC_VERSION)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
return -1;
}
- virBufferAsprintf(&buf, ",gic-version=%d", def->gic_version);
+ virBufferAsprintf(&buf, ",gic-version=%s",
+ virGICVersionTypeToString(def->gic_version));
}
}
}