return 0;
}
-/* virDomainVirtioSerialAddrSetRemoveController
- *
- * Removes a virtio serial controller from the address set.
- */
-void
-virDomainVirtioSerialAddrSetRemoveController(virDomainVirtioSerialAddrSetPtr addrs,
- virDomainControllerDefPtr cont)
-{
- ssize_t pos;
-
- if (cont->type != VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL)
- return;
-
- VIR_DEBUG("Removing virtio serial controller index %u "
- "from the address set", cont->idx);
-
- pos = virDomainVirtioSerialAddrFindController(addrs, cont->idx);
-
- if (pos >= 0)
- VIR_DELETE_ELEMENT(addrs->controllers, pos, addrs->ncontrollers);
-}
void
virDomainVirtioSerialAddrSetFree(virDomainVirtioSerialAddrSetPtr addrs)
virDomainVirtioSerialAddrSetAddController(virDomainVirtioSerialAddrSetPtr addrs,
virDomainControllerDefPtr cont)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-void
-virDomainVirtioSerialAddrSetRemoveController(virDomainVirtioSerialAddrSetPtr addrs,
- virDomainControllerDefPtr cont)
- ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int
virDomainVirtioSerialAddrSetAddControllers(virDomainVirtioSerialAddrSetPtr addrs,
virDomainDefPtr def)
char *devstr = NULL;
qemuDomainObjPrivatePtr priv = vm->privateData;
bool releaseaddr = false;
- bool addedToAddrSet = false;
if (controller->type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
if (qemuAssignDeviceControllerAlias(vm->def, priv->qemuCaps, controller) < 0)
goto cleanup;
- if (controller->type == VIR_DOMAIN_CONTROLLER_TYPE_USB &&
- controller->model == -1 &&
- !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_PIIX3_USB_UHCI)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("USB controller hotplug unsupported in this QEMU binary"));
- goto cleanup;
- }
-
- if (controller->type == VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL &&
- virDomainVirtioSerialAddrSetAddController(priv->vioserialaddrs,
- controller) < 0)
- goto cleanup;
- addedToAddrSet = true;
-
if (!(devstr = qemuBuildControllerDevStr(vm->def, controller, priv->qemuCaps, NULL)))
goto cleanup;
}
}
cleanup:
- if (ret != 0 && addedToAddrSet)
- virDomainVirtioSerialAddrSetRemoveController(priv->vioserialaddrs,
- controller);
if (ret != 0 && releaseaddr)
qemuDomainReleaseDeviceAddress(vm, &controller->info, NULL);