提交 b12acd31 编写于 作者: J John Ferlan

qemu: Introduce qemuBuildRNGCommandLine

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: NJohn Ferlan <jferlan@redhat.com>
上级 00e47796
...@@ -5197,7 +5197,7 @@ qemuBuildSclpDevStr(virDomainChrDefPtr dev) ...@@ -5197,7 +5197,7 @@ qemuBuildSclpDevStr(virDomainChrDefPtr dev)
static int static int
qemuBuildRNGBackendChrdevStr(virLogManagerPtr logManager, qemuBuildRNGBackendChrdevStr(virLogManagerPtr logManager,
virCommandPtr cmd, virCommandPtr cmd,
virDomainDefPtr def, const virDomainDef *def,
virDomainRNGDefPtr rng, virDomainRNGDefPtr rng,
virQEMUCapsPtr qemuCaps, virQEMUCapsPtr qemuCaps,
char **chr) char **chr)
...@@ -5304,7 +5304,7 @@ qemuBuildRNGBackendStr(virDomainRNGDefPtr rng, ...@@ -5304,7 +5304,7 @@ qemuBuildRNGBackendStr(virDomainRNGDefPtr rng,
char * char *
qemuBuildRNGDevStr(virDomainDefPtr def, qemuBuildRNGDevStr(const virDomainDef *def,
virDomainRNGDefPtr dev, virDomainRNGDefPtr dev,
virQEMUCapsPtr qemuCaps) virQEMUCapsPtr qemuCaps)
{ {
...@@ -5356,6 +5356,52 @@ qemuBuildRNGDevStr(virDomainDefPtr def, ...@@ -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) static char *qemuBuildSmbiosBiosStr(virSysinfoBIOSDefPtr def)
{ {
virBuffer buf = VIR_BUFFER_INITIALIZER; virBuffer buf = VIR_BUFFER_INITIALIZER;
...@@ -9185,39 +9231,8 @@ qemuBuildCommandLine(virConnectPtr conn, ...@@ -9185,39 +9231,8 @@ qemuBuildCommandLine(virConnectPtr conn,
if (qemuBuildMemballoonCommandLine(cmd, def, qemuCaps) < 0) if (qemuBuildMemballoonCommandLine(cmd, def, qemuCaps) < 0)
goto error; goto error;
for (i = 0; i < def->nrngs; i++) { if (qemuBuildRNGCommandLine(logManager, cmd, def, qemuCaps) < 0)
virDomainRNGDefPtr rng = def->rngs[i]; goto error;
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 (def->nvram) { if (def->nvram) {
if (ARCH_IS_PPC64(def->os.arch) && if (ARCH_IS_PPC64(def->os.arch) &&
......
...@@ -155,7 +155,7 @@ char *qemuBuildPCIHostdevDevStr(const virDomainDef *def, ...@@ -155,7 +155,7 @@ char *qemuBuildPCIHostdevDevStr(const virDomainDef *def,
const char *configfd, const char *configfd,
virQEMUCapsPtr qemuCaps); virQEMUCapsPtr qemuCaps);
char *qemuBuildRNGDevStr(virDomainDefPtr def, char *qemuBuildRNGDevStr(const virDomainDef *def,
virDomainRNGDefPtr dev, virDomainRNGDefPtr dev,
virQEMUCapsPtr qemuCaps); virQEMUCapsPtr qemuCaps);
int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng, int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册