]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_command: Honour chardev alias assignment with a function
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 13 Mar 2013 08:41:33 +0000 (09:41 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 12 Jul 2013 09:00:08 +0000 (11:00 +0200)
The chardev alias assignment is going to be needed in a separate
places, so it should be moved into a separate function rather
than copying code randomly around.

src/qemu/qemu_command.c
src/qemu/qemu_command.h

index 7845daa21663487ccc3cd97afe1e57fe6b75b9e2..d11456bafc6fc515fb590d7fdc412656d923edb2 100644 (file)
@@ -863,6 +863,36 @@ qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller)
     return virAsprintf(&controller->info.alias, "%s%d", prefix, controller->idx);
 }
 
+int
+qemuAssignDeviceChrAlias(virDomainDefPtr def ATTRIBUTE_UNUSED,
+                         virDomainChrDefPtr chr,
+                         ssize_t idx)
+{
+    const char *prefix = NULL;
+
+    switch ((enum virDomainChrDeviceType) chr->deviceType) {
+    case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL:
+        prefix = "parallel";
+        break;
+
+    case VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL:
+        prefix = "serial";
+        break;
+
+    case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE:
+        prefix = "console";
+        break;
+
+    case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL:
+        prefix = "channel";
+        break;
+
+    case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST:
+        return -1;
+    }
+
+    return virAsprintf(&chr->info.alias, "%s%zd", prefix, idx);
+}
 
 int
 qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCapsPtr qemuCaps)
@@ -918,19 +948,19 @@ qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCapsPtr qemuCaps)
             return -1;
     }
     for (i = 0; i < def->nparallels; i++) {
-        if (virAsprintf(&def->parallels[i]->info.alias, "parallel%zu", i) < 0)
+        if (qemuAssignDeviceChrAlias(def, def->parallels[i], i) < 0)
             return -1;
     }
     for (i = 0; i < def->nserials; i++) {
-        if (virAsprintf(&def->serials[i]->info.alias, "serial%zu", i) < 0)
+        if (qemuAssignDeviceChrAlias(def, def->serials[i], i) < 0)
             return -1;
     }
     for (i = 0; i < def->nchannels; i++) {
-        if (virAsprintf(&def->channels[i]->info.alias, "channel%zu", i) < 0)
+        if (qemuAssignDeviceChrAlias(def, def->channels[i], i) < 0)
             return -1;
     }
     for (i = 0; i < def->nconsoles; i++) {
-        if (virAsprintf(&def->consoles[i]->info.alias, "console%zu", i) < 0)
+        if (qemuAssignDeviceChrAlias(def, def->consoles[i], i) < 0)
             return -1;
     }
     for (i = 0; i < def->nhubs; i++) {
index 299344852e0eac3f34c5ef05acf0885da07a7dda..e92c78a069e855c02634e21e2e305f810db31907 100644 (file)
@@ -260,6 +260,9 @@ int qemuAssignDeviceDiskAlias(virDomainDefPtr vmdef,
 int qemuAssignDeviceHostdevAlias(virDomainDefPtr def, virDomainHostdevDefPtr hostdev, int idx);
 int qemuAssignDeviceControllerAlias(virDomainControllerDefPtr controller);
 int qemuAssignDeviceRedirdevAlias(virDomainDefPtr def, virDomainRedirdevDefPtr redirdev, int idx);
+int qemuAssignDeviceChrAlias(virDomainDefPtr def,
+                             virDomainChrDefPtr chr,
+                             ssize_t idx);
 
 int
 qemuParseKeywords(const char *str,