[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 8/9] spice-qemu-char: Remove intermediate buffer
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 8/9] spice-qemu-char: Remove intermediate buffer |
Date: |
Tue, 16 Apr 2013 11:56:33 +0200 |
From: Alon Levy <address@hidden>
virtio-serial's buffer is valid when it calls us, and we don't
access it otherwise: vmc_read is only called in response to wakeup,
or else we set datalen=0 and throttle. Then vmc_read is called back,
we return 0 (not accessing the buffer) and set the timer to unthrottle.
Also make datalen int and not ssize_t (to fit spice_chr_write signature).
HdG: Update to apply to spice-qemu-char with new gio-channel based
flowcontrol support.
Signed-off-by: Hans de Goede <address@hidden>
Signed-off-by: Gerd Hoffmann <address@hidden>
---
spice-qemu-char.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/spice-qemu-char.c b/spice-qemu-char.c
index 7e551bf..ff95fcb 100644
--- a/spice-qemu-char.c
+++ b/spice-qemu-char.c
@@ -14,9 +14,8 @@ typedef struct SpiceCharDriver {
char *subtype;
bool active;
bool blocked;
- uint8_t *buffer;
- uint8_t *datapos;
- ssize_t bufsize, datalen;
+ const uint8_t *datapos;
+ int datalen;
QLIST_ENTRY(SpiceCharDriver) next;
} SpiceCharDriver;
@@ -186,12 +185,7 @@ static int spice_chr_write(CharDriverState *chr, const
uint8_t *buf, int len)
int read_bytes;
assert(s->datalen == 0);
- if (s->bufsize < len) {
- s->bufsize = len;
- s->buffer = g_realloc(s->buffer, s->bufsize);
- }
- memcpy(s->buffer, buf, len);
- s->datapos = s->buffer;
+ s->datapos = buf;
s->datalen = len;
spice_server_char_device_wakeup(&s->sin);
read_bytes = len - s->datalen;
--
1.7.9.7
- [Qemu-devel] [PULL 0/9] spice patch queue, Gerd Hoffmann, 2013/04/16
- [Qemu-devel] [PATCH 1/9] qxl: add 4k + 8k resolutions, Gerd Hoffmann, 2013/04/16
- [Qemu-devel] [PATCH 2/9] qxl: add 2000x2000 and 2048x2048 video modes, Gerd Hoffmann, 2013/04/16
- [Qemu-devel] [PATCH 3/9] spice: (32 bit only) fix surface cmd tracking destruction, Gerd Hoffmann, 2013/04/16
- [Qemu-devel] [PATCH 5/9] virtio-console: Remove any pending watches on close, Gerd Hoffmann, 2013/04/16
- [Qemu-devel] [PATCH 6/9] spice-qemu-char: Remove #ifdef-ed code for old spice-server compat, Gerd Hoffmann, 2013/04/16
- [Qemu-devel] [PATCH 8/9] spice-qemu-char: Remove intermediate buffer,
Gerd Hoffmann <=
- [Qemu-devel] [PATCH 4/9] virtio-console: Also throttle when less was written then requested, Gerd Hoffmann, 2013/04/16
- [Qemu-devel] [PATCH 7/9] spice-qemu-char: Add watch support, Gerd Hoffmann, 2013/04/16
- [Qemu-devel] [PATCH 9/9] spice-qemu-char: vmc_write: Don't write more bytes then we're asked too, Gerd Hoffmann, 2013/04/16