]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Introduce qemuBuildRNGCommandLine
authorJohn Ferlan <jferlan@redhat.com>
Sat, 12 Mar 2016 00:36:27 +0000 (19:36 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Tue, 15 Mar 2016 11:10:22 +0000 (07:10 -0400)
Add new function to manage adding the RNG device options to the
command line removing that task from the mainline qemuBuildCommandLine.

Also modify the qemuBuildRNGDevStr to use const virDomainDef instead
of virDomainDefPtr.

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_command.h

index 92e96d2a968aa4e66adea8c229a1f07cab00583b..3bcabc31fda6fbbac485a4496194a09db86d8a50 100644 (file)
@@ -5197,7 +5197,7 @@ qemuBuildSclpDevStr(virDomainChrDefPtr dev)
 static int
 qemuBuildRNGBackendChrdevStr(virLogManagerPtr logManager,
                              virCommandPtr cmd,
-                             virDomainDefPtr def,
+                             const virDomainDef *def,
                              virDomainRNGDefPtr rng,
                              virQEMUCapsPtr qemuCaps,
                              char **chr)
@@ -5304,7 +5304,7 @@ qemuBuildRNGBackendStr(virDomainRNGDefPtr rng,
 
 
 char *
-qemuBuildRNGDevStr(virDomainDefPtr def,
+qemuBuildRNGDevStr(const virDomainDef *def,
                    virDomainRNGDefPtr dev,
                    virQEMUCapsPtr qemuCaps)
 {
@@ -5356,6 +5356,52 @@ qemuBuildRNGDevStr(virDomainDefPtr def,
 }
 
 
+static int
+qemuBuildRNGCommandLine(virLogManagerPtr logManager,
+                        virCommandPtr cmd,
+                        const virDomainDef *def,
+                        virQEMUCapsPtr qemuCaps)
+{
+    size_t i;
+
+    for (i = 0; i < def->nrngs; i++) {
+        virDomainRNGDefPtr rng = def->rngs[i];
+        char *tmp;
+
+        if (!rng->info.alias) {
+            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                           _("RNG device is missing alias"));
+            return -1;
+        }
+
+        /* possibly add character device for backend */
+        if (qemuBuildRNGBackendChrdevStr(logManager, cmd, def,
+                                         rng, qemuCaps, &tmp) < 0)
+            return -1;
+
+        if (tmp) {
+            virCommandAddArgList(cmd, "-chardev", tmp, NULL);
+            VIR_FREE(tmp);
+        }
+
+        /* add the RNG source backend */
+        if (!(tmp = qemuBuildRNGBackendStr(rng, qemuCaps)))
+            return -1;
+
+        virCommandAddArgList(cmd, "-object", tmp, NULL);
+        VIR_FREE(tmp);
+
+        /* add the device */
+        if (!(tmp = qemuBuildRNGDevStr(def, rng, qemuCaps)))
+            return -1;
+        virCommandAddArgList(cmd, "-device", tmp, NULL);
+        VIR_FREE(tmp);
+    }
+
+    return 0;
+}
+
+
 static char *qemuBuildSmbiosBiosStr(virSysinfoBIOSDefPtr def)
 {
     virBuffer buf = VIR_BUFFER_INITIALIZER;
@@ -9185,39 +9231,8 @@ qemuBuildCommandLine(virConnectPtr conn,
     if (qemuBuildMemballoonCommandLine(cmd, def, qemuCaps) < 0)
         goto error;
 
-    for (i = 0; i < def->nrngs; i++) {
-        virDomainRNGDefPtr rng = def->rngs[i];
-        char *tmp;
-
-        if (!rng->info.alias) {
-            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                           _("RNG device is missing alias"));
-            goto error;
-        }
-
-        /* possibly add character device for backend */
-        if (qemuBuildRNGBackendChrdevStr(logManager, cmd, def,
-                                         rng, qemuCaps, &tmp) < 0)
-            goto error;
-
-        if (tmp) {
-            virCommandAddArgList(cmd, "-chardev", tmp, NULL);
-            VIR_FREE(tmp);
-        }
-
-        /* add the RNG source backend */
-        if (!(tmp = qemuBuildRNGBackendStr(rng, qemuCaps)))
-            goto error;
-
-        virCommandAddArgList(cmd, "-object", tmp, NULL);
-        VIR_FREE(tmp);
-
-        /* add the device */
-        if (!(tmp = qemuBuildRNGDevStr(def, rng, qemuCaps)))
-            goto error;
-        virCommandAddArgList(cmd, "-device", tmp, NULL);
-        VIR_FREE(tmp);
-    }
+    if (qemuBuildRNGCommandLine(logManager, cmd, def, qemuCaps) < 0)
+        goto error;
 
     if (def->nvram) {
         if (ARCH_IS_PPC64(def->os.arch) &&
index 25de1abde8e7c55d92517f341adea57ba937b5d3..7c13d459f8c5ceab9902bf2b40c6d064699b99e1 100644 (file)
@@ -155,7 +155,7 @@ char *qemuBuildPCIHostdevDevStr(const virDomainDef *def,
                                 const char *configfd,
                                 virQEMUCapsPtr qemuCaps);
 
-char *qemuBuildRNGDevStr(virDomainDefPtr def,
+char *qemuBuildRNGDevStr(const virDomainDef *def,
                          virDomainRNGDefPtr dev,
                          virQEMUCapsPtr qemuCaps);
 int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,