Introduce qemuBuildInputDevStr

A function that builds the -device string for input devices.
This commit is contained in:
Ján Tomko 2017-10-04 11:34:31 +02:00
parent d059b24aea
commit c547a5f8d8
2 changed files with 36 additions and 13 deletions

View File

@ -4325,6 +4325,27 @@ qemuBuildUSBInputDevStr(const virDomainDef *def,
}
int
qemuBuildInputDevStr(char **devstr,
const virDomainDef *def,
virDomainInputDefPtr input,
virQEMUCapsPtr qemuCaps)
{
switch (input->bus) {
case VIR_DOMAIN_INPUT_BUS_USB:
if (!(*devstr = qemuBuildUSBInputDevStr(def, input, qemuCaps)))
return -1;
break;
case VIR_DOMAIN_INPUT_BUS_VIRTIO:
if (!(*devstr = qemuBuildVirtioInputDevStr(def, input, qemuCaps)))
return -1;
break;
}
return 0;
}
static int
qemuBuildInputCommandLine(virCommandPtr cmd,
const virDomainDef *def,
@ -4334,22 +4355,17 @@ qemuBuildInputCommandLine(virCommandPtr cmd,
for (i = 0; i < def->ninputs; i++) {
virDomainInputDefPtr input = def->inputs[i];
char *devstr = NULL;
if (input->bus == VIR_DOMAIN_INPUT_BUS_USB) {
char *optstr;
if (qemuBuildInputDevStr(&devstr, def, input, qemuCaps) < 0)
return -1;
if (devstr) {
virCommandAddArg(cmd, "-device");
if (!(optstr = qemuBuildUSBInputDevStr(def, input, qemuCaps)))
return -1;
virCommandAddArg(cmd, optstr);
VIR_FREE(optstr);
} else if (input->bus == VIR_DOMAIN_INPUT_BUS_VIRTIO) {
char *optstr;
virCommandAddArg(cmd, "-device");
if (!(optstr = qemuBuildVirtioInputDevStr(def, input, qemuCaps)))
return -1;
virCommandAddArg(cmd, optstr);
VIR_FREE(optstr);
virCommandAddArg(cmd, devstr);
}
VIR_FREE(devstr);
}
return 0;

View File

@ -197,4 +197,11 @@ char *qemuBuildWatchdogDevStr(const virDomainDef *def,
virDomainWatchdogDefPtr dev,
virQEMUCapsPtr qemuCaps);
int qemuBuildInputDevStr(char **devstr,
const virDomainDef *def,
virDomainInputDefPtr input,
virQEMUCapsPtr qemuCaps)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
ATTRIBUTE_NONNULL(4);
#endif /* __QEMU_COMMAND_H__*/