From patchwork Wed Feb 20 01:02:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1045009 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4440Lx3Jpfz9s0W for ; Wed, 20 Feb 2019 12:26:49 +1100 (AEDT) Received: from localhost ([127.0.0.1]:57657 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwGet-0000vm-62 for incoming@patchwork.ozlabs.org; Tue, 19 Feb 2019 20:26:47 -0500 Received: from eggs.gnu.org ([209.51.188.92]:41326) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwGR7-0005xU-MD for qemu-devel@nongnu.org; Tue, 19 Feb 2019 20:12:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gwGIz-0001iT-VB for qemu-devel@nongnu.org; Tue, 19 Feb 2019 20:04:11 -0500 Received: from mx1.redhat.com ([209.132.183.28]:52758) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gwGIz-0001h5-MC; Tue, 19 Feb 2019 20:04:09 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B0E8D81DF9; Wed, 20 Feb 2019 01:04:05 +0000 (UTC) Received: from x1w.redhat.com (unknown [10.40.205.222]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 05EA71001E7E; Wed, 20 Feb 2019 01:03:46 +0000 (UTC) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Prasad J Pandit , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Paolo Bonzini Date: Wed, 20 Feb 2019 02:02:11 +0100 Message-Id: <20190220010232.18731-5-philmd@redhat.com> In-Reply-To: <20190220010232.18731-1-philmd@redhat.com> References: <20190220010232.18731-1-philmd@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Wed, 20 Feb 2019 01:04:05 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v3 04/25] chardev: Let qemu_chr_be_can_write() return a size_t types X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Corey Minyard , Stefano Stabellini , Samuel Thibault , Li Zhijian , Amit Shah , "Michael S. Tsirkin" , Jason Wang , Cornelia Huck , Halil Pasic , Christian Borntraeger , qemu-s390x@nongnu.org, Paul Durrant , qemu-ppc@nongnu.org, Gerd Hoffmann , Pavel Dovgalyuk , Zhang Chen , Anthony Perard , xen-devel@lists.xenproject.org, Stefan Berger , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" In the previous commit we added an assert to be sure than qemu_chr_be_can_write() will never return a negative value. We can now change its prototype to return a size_t. Adapt the backends accordingly. Suggested-by: Paolo Bonzini Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Marc-André Lureau --- chardev/baum.c | 6 +++--- chardev/char-fd.c | 2 +- chardev/char-pty.c | 4 ++-- chardev/char-socket.c | 7 ++++--- chardev/char-udp.c | 4 ++-- chardev/char-win.c | 2 +- chardev/char.c | 2 +- chardev/msmouse.c | 4 ++-- chardev/spice.c | 2 +- chardev/wctablet.c | 4 ++-- hw/bt/hci-csr.c | 2 +- include/chardev/char-fd.h | 2 +- include/chardev/char.h | 2 +- ui/console.c | 6 +++--- 14 files changed, 25 insertions(+), 24 deletions(-) diff --git a/chardev/baum.c b/chardev/baum.c index 78b0c87625..1d69d62158 100644 --- a/chardev/baum.c +++ b/chardev/baum.c @@ -265,7 +265,7 @@ static int baum_deferred_init(BaumChardev *baum) static void baum_chr_accept_input(struct Chardev *chr) { BaumChardev *baum = BAUM_CHARDEV(chr); - int room, first; + size_t room, first; if (!baum->out_buf_used) return; @@ -292,7 +292,7 @@ static void baum_write_packet(BaumChardev *baum, const uint8_t *buf, int len) { Chardev *chr = CHARDEV(baum); uint8_t io_buf[1 + 2 * len], *cur = io_buf; - int room; + size_t room; *cur++ = ESC; while (len--) if ((*cur++ = *buf++) == ESC) @@ -303,7 +303,7 @@ static void baum_write_packet(BaumChardev *baum, const uint8_t *buf, int len) /* Fits */ qemu_chr_be_write(chr, io_buf, len); } else { - int first; + size_t first; uint8_t out; /* Can't fit all, send what can be, and store the rest. */ qemu_chr_be_write(chr, io_buf, room); diff --git a/chardev/char-fd.c b/chardev/char-fd.c index 2421d8e216..0fe2822869 100644 --- a/chardev/char-fd.c +++ b/chardev/char-fd.c @@ -43,7 +43,7 @@ static gboolean fd_chr_read(QIOChannel *chan, GIOCondition cond, void *opaque) { Chardev *chr = CHARDEV(opaque); FDChardev *s = FD_CHARDEV(opaque); - int len; + size_t len; uint8_t buf[CHR_READ_BUF_LEN]; ssize_t ret; diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 7777f6ddef..eae25f043b 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -34,7 +34,7 @@ typedef struct { Chardev parent; QIOChannel *ioc; - int read_bytes; + size_t read_bytes; int connected; GSource *timer_src; @@ -132,7 +132,7 @@ static gboolean pty_chr_read(QIOChannel *chan, GIOCondition cond, void *opaque) { Chardev *chr = CHARDEV(opaque); PtyChardev *s = PTY_CHARDEV(opaque); - gsize len; + size_t len; uint8_t buf[CHR_READ_BUF_LEN]; ssize_t ret; diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 262a59b64f..4010c343e0 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -60,7 +60,7 @@ typedef struct { GSource *hup_source; QCryptoTLSCreds *tls_creds; TCPChardevState state; - int max_size; + size_t max_size; int do_telnetopt; int do_nodelay; int *read_msgfds; @@ -493,10 +493,11 @@ static gboolean tcp_chr_read(QIOChannel *chan, GIOCondition cond, void *opaque) Chardev *chr = CHARDEV(opaque); SocketChardev *s = SOCKET_CHARDEV(opaque); uint8_t buf[CHR_READ_BUF_LEN]; - int len, size; + size_t len; + int size; if ((s->state != TCP_CHARDEV_STATE_CONNECTED) || - s->max_size <= 0) { + s->max_size == 0) { return TRUE; } len = sizeof(buf); diff --git a/chardev/char-udp.c b/chardev/char-udp.c index b6e399e983..d4f40626e4 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -39,7 +39,7 @@ typedef struct { uint8_t buf[CHR_READ_BUF_LEN]; int bufcnt; int bufptr; - int max_size; + size_t max_size; } UdpChardev; #define UDP_CHARDEV(obj) OBJECT_CHECK(UdpChardev, (obj), TYPE_CHARDEV_UDP) @@ -58,7 +58,7 @@ static void udp_chr_flush_buffer(UdpChardev *s) Chardev *chr = CHARDEV(s); while (s->max_size > 0 && s->bufptr < s->bufcnt) { - int n = MIN(s->max_size, s->bufcnt - s->bufptr); + size_t n = MIN(s->max_size, s->bufcnt - s->bufptr); qemu_chr_be_write(chr, &s->buf[s->bufptr], n); s->bufptr += n; s->max_size = qemu_chr_be_can_write(chr); diff --git a/chardev/char-win.c b/chardev/char-win.c index 05518e0958..30361e8852 100644 --- a/chardev/char-win.c +++ b/chardev/char-win.c @@ -29,7 +29,7 @@ static void win_chr_read(Chardev *chr, DWORD len) { WinChardev *s = WIN_CHARDEV(chr); - int max_size = qemu_chr_be_can_write(chr); + size_t max_size = qemu_chr_be_can_write(chr); int ret, err; uint8_t buf[CHR_READ_BUF_LEN]; DWORD size; diff --git a/chardev/char.c b/chardev/char.c index 71ecd32b25..3149cd3ba9 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -156,7 +156,7 @@ int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all) return offset; } -int qemu_chr_be_can_write(Chardev *s) +size_t qemu_chr_be_can_write(Chardev *s) { CharBackend *be = s->be; int receivable_bytes; diff --git a/chardev/msmouse.c b/chardev/msmouse.c index 0ffd137ce8..cdb6f86037 100644 --- a/chardev/msmouse.c +++ b/chardev/msmouse.c @@ -38,7 +38,7 @@ typedef struct { bool btns[INPUT_BUTTON__MAX]; bool btnc[INPUT_BUTTON__MAX]; uint8_t outbuf[32]; - int outlen; + size_t outlen; } MouseChardev; #define TYPE_CHARDEV_MSMOUSE "chardev-msmouse" @@ -48,7 +48,7 @@ typedef struct { static void msmouse_chr_accept_input(Chardev *chr) { MouseChardev *mouse = MOUSE_CHARDEV(chr); - int len; + size_t len; len = qemu_chr_be_can_write(chr); if (len > mouse->outlen) { diff --git a/chardev/spice.c b/chardev/spice.c index 173c257949..ad180a8a13 100644 --- a/chardev/spice.c +++ b/chardev/spice.c @@ -43,7 +43,7 @@ static int vmc_write(SpiceCharDeviceInstance *sin, const uint8_t *buf, int len) uint8_t* p = (uint8_t*)buf; while (len > 0) { - int can_write = qemu_chr_be_can_write(chr); + size_t can_write = qemu_chr_be_can_write(chr); last_out = MIN(len, can_write); if (last_out <= 0) { break; diff --git a/chardev/wctablet.c b/chardev/wctablet.c index cf7a08a363..daae570bc7 100644 --- a/chardev/wctablet.c +++ b/chardev/wctablet.c @@ -74,7 +74,7 @@ typedef struct { /* Command to be sent to serial port */ uint8_t outbuf[WC_OUTPUT_BUF_MAX_LEN]; - int outlen; + size_t outlen; int line_speed; bool send_events; @@ -186,7 +186,7 @@ static QemuInputHandler wctablet_handler = { static void wctablet_chr_accept_input(Chardev *chr) { TabletChardev *tablet = WCTABLET_CHARDEV(chr); - int len, canWrite; + size_t len, canWrite; canWrite = qemu_chr_be_can_write(chr); len = canWrite; diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c index fa6660a113..e837a3fa1f 100644 --- a/hw/bt/hci-csr.c +++ b/hw/bt/hci-csr.c @@ -38,7 +38,7 @@ struct csrhci_s { #define FIFO_LEN 4096 int out_start; int out_len; - int out_size; + size_t out_size; uint8_t outfifo[FIFO_LEN * 2]; uint8_t inpkt[FIFO_LEN]; enum { diff --git a/include/chardev/char-fd.h b/include/chardev/char-fd.h index e7c2b176f9..36c6b89cee 100644 --- a/include/chardev/char-fd.h +++ b/include/chardev/char-fd.h @@ -31,7 +31,7 @@ typedef struct FDChardev { Chardev parent; QIOChannel *ioc_in, *ioc_out; - int max_size; + size_t max_size; } FDChardev; #define TYPE_CHARDEV_FD "chardev-fd" diff --git a/include/chardev/char.h b/include/chardev/char.h index c0b57f7685..0341dd1ba2 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -173,7 +173,7 @@ Chardev *qemu_chr_new_noreplay(const char *label, const char *filename, * * Returns: the number of bytes the front end can receive via @qemu_chr_be_write */ -int qemu_chr_be_can_write(Chardev *s); +size_t qemu_chr_be_can_write(Chardev *s); /** * qemu_chr_be_write: diff --git a/ui/console.c b/ui/console.c index 6d2282d3e9..42f04e2b37 100644 --- a/ui/console.c +++ b/ui/console.c @@ -61,8 +61,8 @@ enum TTYState { typedef struct QEMUFIFO { uint8_t *buf; - int buf_size; - int count, wptr, rptr; + size_t buf_size, count; + int wptr, rptr; } QEMUFIFO; static int qemu_fifo_write(QEMUFIFO *f, const uint8_t *buf, int len1) @@ -1110,7 +1110,7 @@ static int vc_chr_write(Chardev *chr, const uint8_t *buf, int len) static void kbd_send_chars(void *opaque) { QemuConsole *s = opaque; - int len; + size_t len; uint8_t buf[16]; len = qemu_chr_be_can_write(s->chr);