}
+/**
+ * virQEMUCapsSetGICCapabilities:
+ * @qemuCaps: QEMU capabilities
+ * @capabilities: GIC capabilities
+ * @ncapabilities: number of GIC capabilities
+ *
+ * Set the GIC capabilities for @qemuCaps.
+ *
+ * The ownership of @capabilities is taken away from the caller, ie. this
+ * function will not make a copy of @capabilities, so releasing that memory
+ * after it's been called is a bug.
+ */
+void
+virQEMUCapsSetGICCapabilities(virQEMUCapsPtr qemuCaps,
+ virGICCapability *capabilities,
+ size_t ncapabilities)
+{
+ VIR_FREE(qemuCaps->gicCapabilities);
+
+ qemuCaps->gicCapabilities = capabilities;
+ qemuCaps->ngicCapabilities = ncapabilities;
+}
+
+
static int
virQEMUCapsProbeQMPCommands(virQEMUCapsPtr qemuCaps,
qemuMonitorPtr mon)
if ((ncaps = qemuMonitorGetGICCapabilities(mon, &caps)) < 0)
return -1;
- VIR_FREE(qemuCaps->gicCapabilities);
-
- qemuCaps->gicCapabilities = caps;
- qemuCaps->ngicCapabilities = ncaps;
+ virQEMUCapsSetGICCapabilities(qemuCaps, caps, ncaps);
return 0;
}
void virQEMUCapsFilterByMachineType(virQEMUCapsPtr qemuCaps,
const char *machineType);
+/* Only for use by test suite */
+void virQEMUCapsSetGICCapabilities(virQEMUCapsPtr qemuCaps,
+ virGICCapability *capabilities,
+ size_t ncapabilities);
+
virQEMUCapsCachePtr virQEMUCapsCacheNew(const char *libDir,
const char *cacheDir,
uid_t uid, gid_t gid);