On 07/10/2013 01:02 PM, Michal Privoznik wrote:
The function being introduced is responsible for creating command
line argument for '-device' for given character device. Based on
the chardev type, it calls appropriate qemuBuild.*ChrDeviceStr(),
e.g. qemuBuildSerialChrDeviceStr() for serial chardev and so on.
---
src/qemu/qemu_command.c | 202 +++++++++++++++++++++++++++++++++++++-----------
src/qemu/qemu_command.h | 12 +--
2 files changed, 163 insertions(+), 51 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 6cf46a2..063d76b 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6593,6 +6593,21 @@ cleanup:
return ret;
}
+static int
+qemuBuildChrDeviceCommandLine(virCommandPtr cmd,
+ virDomainDefPtr def,
+ virDomainChrDefPtr chr,
+ virQEMUCapsPtr qemuCaps)
+{
+ char *devstr = NULL;
+
+ if (qemuBuildChrDeviceStr(&devstr, def, chr, qemuCaps) < 0)
+ return -1;
+
+ virCommandAddArgList(cmd, "-device", devstr, NULL);
"make -C tests valgrind" reports:
==16114== 1,100 bytes in 1 blocks are definitely lost in loss record 100 of 118
==16114== at 0x4A0887C: malloc (vg_replace_malloc.c:270)
==16114== by 0x4A089F0: realloc (vg_replace_malloc.c:662)
==16114== by 0x4C70BE7: virReallocN (viralloc.c:233)
==16114== by 0x4C73BA0: virBufferGrow (virbuffer.c:129)
==16114== by 0x4C740AE: virBufferVasprintf (virbuffer.c:321)
==16114== by 0x4C74223: virBufferAsprintf (virbuffer.c:294)
==16114== by 0x437DA2: qemuBuildChrDeviceStr (qemu_command.c:8547)
==16114== by 0x438027: qemuBuildChrDeviceCommandLine (qemu_command.c:6607)
==16114== by 0x43BAEF: qemuBuildCommandLine (qemu_command.c:7693)
==16114== by 0x4247EC: testCompareXMLToArgvHelper (qemuxml2argvtest.c:157)
==16114== by 0x425E97: virtTestRun (testutils.c:159)
==16114== by 0x4205F1: mymain (qemuxml2argvtest.c:715)
==16114==
You need a VIR_FREE(devstr);
+ return 0;
+}
+