[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-1.4 02/12] qmp: Clean up design of memchar-read
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH for-1.4 02/12] qmp: Clean up design of memchar-read |
Date: |
Tue, 5 Feb 2013 17:22:05 +0100 |
The data returned has a well-defined size, which makes the size
returned along with it redundant at best. Drop it.
Signed-off-by: Markus Armbruster <address@hidden>
---
hmp.c | 11 ++++-------
qapi-schema.json | 18 ++----------------
qemu-char.c | 21 +++++++++------------
qmp-commands.hx | 2 +-
4 files changed, 16 insertions(+), 36 deletions(-)
diff --git a/hmp.c b/hmp.c
index 9fdf1ce..f6bb767 100644
--- a/hmp.c
+++ b/hmp.c
@@ -677,21 +677,18 @@ void hmp_memchar_read(Monitor *mon, const QDict *qdict)
{
uint32_t size = qdict_get_int(qdict, "size");
const char *chardev = qdict_get_str(qdict, "device");
- MemCharRead *meminfo;
+ char *data;
Error *errp = NULL;
- meminfo = qmp_memchar_read(chardev, size, false, 0, &errp);
+ data = qmp_memchar_read(chardev, size, false, 0, &errp);
if (errp) {
monitor_printf(mon, "%s\n", error_get_pretty(errp));
error_free(errp);
return;
}
- if (meminfo->count > 0) {
- monitor_printf(mon, "%s\n", meminfo->data);
- }
-
- qapi_free_MemCharRead(meminfo);
+ monitor_printf(mon, "%s\n", data);
+ g_free(data);
}
static void hmp_cont_cb(void *opaque, int err)
diff --git a/qapi-schema.json b/qapi-schema.json
index 9e2cbbd..d8fa1c3 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -361,20 +361,6 @@
'*format': 'DataFormat'} }
##
-# @MemCharRead
-#
-# Result of QMP command memchar-read.
-#
-# @data: The data read from memchar as string.
-#
-# @count: The numbers of bytes read from.
-#
-# Since: 1.4
-##
-{ 'type': 'MemCharRead',
- 'data': { 'data': 'str', 'count': 'int' } }
-
-##
# @memchar-read:
#
# Provide read interface for memchardev. Read from the char
@@ -387,14 +373,14 @@
# @format: #optional the format of the data want to read from
# memchardev, by default is 'utf8'.
#
-# Returns: @MemCharRead
+# Returns: data read from the device
# If @device is not a valid memchr device, DeviceNotFound
#
# Since: 1.4
##
{ 'command': 'memchar-read',
'data': {'device': 'str', 'size': 'int', '*format': 'DataFormat'},
- 'returns': 'MemCharRead' }
+ 'returns': 'str' }
##
# @CommandInfo:
diff --git a/qemu-char.c b/qemu-char.c
index 9c1dd13..6de8aff 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2788,14 +2788,14 @@ void qmp_memchar_write(const char *device, const char
*data,
}
}
-MemCharRead *qmp_memchar_read(const char *device, int64_t size,
- bool has_format, enum DataFormat format,
- Error **errp)
+char *qmp_memchar_read(const char *device, int64_t size,
+ bool has_format, enum DataFormat format,
+ Error **errp)
{
CharDriverState *chr;
guchar *read_data;
- MemCharRead *meminfo;
size_t count;
+ char *data;
chr = qemu_chr_find(device);
if (!chr) {
@@ -2813,26 +2813,23 @@ MemCharRead *qmp_memchar_read(const char *device,
int64_t size,
return NULL;
}
- meminfo = g_malloc0(sizeof(MemCharRead));
-
count = qemu_chr_cirmem_count(chr);
if (count == 0) {
- meminfo->data = g_strdup("");
- return meminfo;
+ return g_strdup("");
}
size = size > count ? count : size;
read_data = g_malloc0(size + 1);
- meminfo->count = cirmem_chr_read(chr, read_data, size);
+ cirmem_chr_read(chr, read_data, size);
if (has_format && (format == DATA_FORMAT_BASE64)) {
- meminfo->data = g_base64_encode(read_data, (size_t)meminfo->count);
+ data = g_base64_encode(read_data, count);
} else {
- meminfo->data = (char *)read_data;
+ data = (char *)read_data;
}
- return meminfo;
+ return data;
}
QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
diff --git a/qmp-commands.hx b/qmp-commands.hx
index 8468f10..51ce2e6 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -525,7 +525,7 @@ Example:
"arguments": { "device": foo,
"size": 1000,
"format": "utf8" } }
-<- { "return": { "data": "data string...", "count": 1000 } }
+<- {"return": "abcdefgh"}
EQMP
--
1.7.11.7
- [Qemu-devel] [PATCH for-1.4 00/12] Fix memchar-read/-write before API gets released, Markus Armbruster, 2013/02/05
- [Qemu-devel] [PATCH for-1.4 04/12] qmp: Plug memory leaks in memchar-write, memchar-read, Markus Armbruster, 2013/02/05
- [Qemu-devel] [PATCH for-1.4 03/12] qmp: Clean up type usage in qmp_memchar_write(), qmp_memchar_read(), Markus Armbruster, 2013/02/05
- [Qemu-devel] [PATCH for-1.4 02/12] qmp: Clean up design of memchar-read,
Markus Armbruster <=
- [Qemu-devel] [PATCH for-1.4 06/12] qmp: Drop wasteful zero-initialization in qmp_memchar_read(), Markus Armbruster, 2013/02/05
- [Qemu-devel] [PATCH for-1.4 07/12] qemu-char: Fix chardev "memory" not to drop IAC characters, Markus Armbruster, 2013/02/05
- [Qemu-devel] [PATCH for-1.4 05/12] qmp: Drop superfluous special case "empty" in qmp_memchar_read(), Markus Armbruster, 2013/02/05