mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: Refactor creation of shared memory device commandline
Rename qemuBuildShmemDevCmd to qemuBuildShmemDevStr and change the return type so that it can be reused in the device hotplug code later. And split the chardev creation part in a new function qemuBuildShmemBackendStr for reuse in the device hotplug code later. Signed-off-by: Luyao Huang <lhuang@redhat.com>
This commit is contained in:
parent
e9401342e1
commit
ffe96a1593
@ -8526,9 +8526,8 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
qemuBuildShmemDevCmd(virCommandPtr cmd,
|
||||
virDomainDefPtr def,
|
||||
char *
|
||||
qemuBuildShmemDevStr(virDomainDefPtr def,
|
||||
virDomainShmemDefPtr shmem,
|
||||
virQEMUCapsPtr qemuCaps)
|
||||
{
|
||||
@ -8582,26 +8581,17 @@ qemuBuildShmemDevCmd(virCommandPtr cmd,
|
||||
if (virBufferCheckError(&buf) < 0)
|
||||
goto error;
|
||||
|
||||
virCommandAddArg(cmd, "-device");
|
||||
virCommandAddArgBuffer(cmd, &buf);
|
||||
|
||||
return 0;
|
||||
return virBufferContentAndReset(&buf);
|
||||
|
||||
error:
|
||||
virBufferFreeAndReset(&buf);
|
||||
return -1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
qemuBuildShmemCommandLine(virCommandPtr cmd,
|
||||
virDomainDefPtr def,
|
||||
virDomainShmemDefPtr shmem,
|
||||
char *
|
||||
qemuBuildShmemBackendStr(virDomainShmemDefPtr shmem,
|
||||
virQEMUCapsPtr qemuCaps)
|
||||
{
|
||||
if (qemuBuildShmemDevCmd(cmd, def, shmem, qemuCaps) < 0)
|
||||
return -1;
|
||||
|
||||
if (shmem->server.enabled) {
|
||||
char *devstr = NULL;
|
||||
virDomainChrSourceDef source = {
|
||||
.type = VIR_DOMAIN_CHR_TYPE_UNIX,
|
||||
@ -8615,18 +8605,34 @@ qemuBuildShmemCommandLine(virCommandPtr cmd,
|
||||
virAsprintf(&source.data.nix.path,
|
||||
"/var/lib/libvirt/shmem-%s-sock",
|
||||
shmem->name) < 0)
|
||||
return -1;
|
||||
return NULL;
|
||||
|
||||
devstr = qemuBuildChrChardevStr(&source, shmem->info.alias, qemuCaps);
|
||||
|
||||
if (!shmem->server.path)
|
||||
VIR_FREE(source.data.nix.path);
|
||||
|
||||
if (!devstr)
|
||||
return devstr;
|
||||
}
|
||||
|
||||
static int
|
||||
qemuBuildShmemCommandLine(virCommandPtr cmd,
|
||||
virDomainDefPtr def,
|
||||
virDomainShmemDefPtr shmem,
|
||||
virQEMUCapsPtr qemuCaps)
|
||||
{
|
||||
char *devstr = NULL;
|
||||
|
||||
if (!(devstr = qemuBuildShmemDevStr(def, shmem, qemuCaps)))
|
||||
return -1;
|
||||
virCommandAddArgList(cmd, "-device", devstr, NULL);
|
||||
VIR_FREE(devstr);
|
||||
|
||||
if (shmem->server.enabled) {
|
||||
if (!(devstr = qemuBuildShmemBackendStr(shmem, qemuCaps)))
|
||||
return -1;
|
||||
|
||||
virCommandAddArg(cmd, "-chardev");
|
||||
virCommandAddArg(cmd, devstr);
|
||||
virCommandAddArgList(cmd, "-chardev", devstr, NULL);
|
||||
VIR_FREE(devstr);
|
||||
}
|
||||
|
||||
|
@ -194,6 +194,13 @@ int qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
|
||||
const char **type,
|
||||
virJSONValuePtr *props);
|
||||
|
||||
char *qemuBuildShmemDevStr(virDomainDefPtr def,
|
||||
virDomainShmemDefPtr shmem,
|
||||
virQEMUCapsPtr qemuCaps);
|
||||
char *qemuBuildShmemBackendStr(virDomainShmemDefPtr shmem,
|
||||
virQEMUCapsPtr qemuCaps);
|
||||
|
||||
|
||||
int qemuOpenPCIConfig(virDomainHostdevDefPtr dev);
|
||||
|
||||
/* Legacy, pre device support */
|
||||
|
Loading…
x
Reference in New Issue
Block a user