static char *
-qemuBuildVirtioSerialPortDevStr(virDomainDefPtr def,
+qemuBuildVirtioSerialPortDevStr(const virDomainDef *def,
virDomainChrDefPtr dev,
virQEMUCapsPtr qemuCaps)
{
static int
qemuBuildChrDeviceCommandLine(virCommandPtr cmd,
- virDomainDefPtr def,
+ const virDomainDef *def,
virDomainChrDefPtr chr,
virQEMUCapsPtr qemuCaps)
{
return 0;
}
+
+static int
+qemuBuildSerialCommandLine(virLogManagerPtr logManager,
+ virCommandPtr cmd,
+ const virDomainDef *def,
+ virQEMUCapsPtr qemuCaps)
+{
+ size_t i;
+ int actualSerials = 0;
+ bool havespice = false;
+
+ if (def->nserials) {
+ for (i = 0; i < def->ngraphics && !havespice; i++) {
+ if (def->graphics[i]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE)
+ havespice = true;
+ }
+ }
+
+ for (i = 0; i < def->nserials; i++) {
+ virDomainChrDefPtr serial = def->serials[i];
+ char *devstr;
+
+ if (serial->source.type == VIR_DOMAIN_CHR_TYPE_SPICEPORT && !havespice)
+ continue;
+
+ /* Use -chardev with -device if they are available */
+ if (virQEMUCapsSupportsChardev(def, qemuCaps, serial)) {
+ virCommandAddArg(cmd, "-chardev");
+ if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, def,
+ &serial->source,
+ serial->info.alias,
+ qemuCaps)))
+ return -1;
+ virCommandAddArg(cmd, devstr);
+ VIR_FREE(devstr);
+
+ if (qemuBuildChrDeviceCommandLine(cmd, def, serial, qemuCaps) < 0)
+ return -1;
+ } else {
+ virCommandAddArg(cmd, "-serial");
+ if (!(devstr = qemuBuildChrArgStr(&serial->source, NULL)))
+ return -1;
+ virCommandAddArg(cmd, devstr);
+ VIR_FREE(devstr);
+ }
+ actualSerials++;
+ }
+
+ /* If we have -device, then we set -nodefaults already */
+ if (!actualSerials && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE))
+ virCommandAddArgList(cmd, "-serial", "none", NULL);
+
+ return 0;
+}
+
+
static int
qemuBuildDomainLoaderCommandLine(virCommandPtr cmd,
virDomainDefPtr def,
virErrorPtr originalError = NULL;
size_t i, j;
char uuid[VIR_UUID_STRING_BUFLEN];
- bool havespice = false;
virCommandPtr cmd = NULL;
bool emitBootindex = false;
- int actualSerials = 0;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
int bootHostdevNet = 0;
if (qemuBuildSmartcardCommandLine(logManager, cmd, def, qemuCaps) < 0)
goto error;
- if (def->nserials) {
- for (i = 0; i < def->ngraphics; i++) {
- if (def->graphics[i]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
- havespice = true;
- break;
- }
- }
- }
-
- for (i = 0; i < def->nserials; i++) {
- virDomainChrDefPtr serial = def->serials[i];
- char *devstr;
-
- if (serial->source.type == VIR_DOMAIN_CHR_TYPE_SPICEPORT && !havespice)
- continue;
-
- /* Use -chardev with -device if they are available */
- if (virQEMUCapsSupportsChardev(def, qemuCaps, serial)) {
- if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, def,
- &serial->source,
- serial->info.alias,
- qemuCaps)))
- goto error;
- virCommandAddArg(cmd, "-chardev");
- virCommandAddArg(cmd, devstr);
- VIR_FREE(devstr);
-
- if (qemuBuildChrDeviceCommandLine(cmd, def, serial, qemuCaps) < 0)
- goto error;
- } else {
- virCommandAddArg(cmd, "-serial");
- if (!(devstr = qemuBuildChrArgStr(&serial->source, NULL)))
- goto error;
- virCommandAddArg(cmd, devstr);
- VIR_FREE(devstr);
- }
- actualSerials++;
- }
-
- /* If we have -device, then we set -nodefault already */
- if (!actualSerials && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE))
- virCommandAddArgList(cmd, "-serial", "none", NULL);
+ if (qemuBuildSerialCommandLine(logManager, cmd, def, qemuCaps) < 0)
+ goto error;
if (!def->nparallels) {
/* If we have -device, then we set -nodefault already */
*/
static int
qemuBuildSerialChrDeviceStr(char **deviceStr,
- virDomainDefPtr def,
+ const virDomainDef *def,
virDomainChrDefPtr serial,
virQEMUCapsPtr qemuCaps,
virArch arch,
static int
qemuBuildChannelChrDeviceStr(char **deviceStr,
- virDomainDefPtr def,
+ const virDomainDef *def,
virDomainChrDefPtr chr,
virQEMUCapsPtr qemuCaps)
{
static int
qemuBuildConsoleChrDeviceStr(char **deviceStr,
- virDomainDefPtr def,
+ const virDomainDef *def,
virDomainChrDefPtr chr,
virQEMUCapsPtr qemuCaps)
{
int
qemuBuildChrDeviceStr(char **deviceStr,
- virDomainDefPtr vmdef,
+ const virDomainDef *vmdef,
virDomainChrDefPtr chr,
virQEMUCapsPtr qemuCaps)
{