From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O9Prr-00067k-4V for qemu-devel@nongnu.org; Tue, 04 May 2010 17:41:27 -0400 Received: from [140.186.70.92] (port=45025 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O9Prp-000664-OO for qemu-devel@nongnu.org; Tue, 04 May 2010 17:41:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O9Prn-000757-PJ for qemu-devel@nongnu.org; Tue, 04 May 2010 17:41:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53524) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O9Prn-00074u-FV for qemu-devel@nongnu.org; Tue, 04 May 2010 17:41:23 -0400 From: Amit Shah Date: Wed, 5 May 2010 03:09:24 +0530 Message-Id: <1273009170-17530-1-git-send-email-amit.shah@redhat.com> Subject: [Qemu-devel] [PATCH v7 0/6] List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu list Cc: Amit Shah , Paul Brook , Gerd Hoffmann , Juan Quintela Hello, This series lets interested callers ask for an -EAGAIN return from the chardev backends (only unix and tcp sockets as of now) to implement their own flow control. A new call, qemu_chr_write_nb() is added, that will fallback to qemu_chr_write() if the backend file isn't non-blocking or if no callback was supplied. Support for other backend types is easy to add and will be done in later patches. Please apply. v7: - constify handlers (Blue Swirl) - remove 'write_cb', a leftover from previous design (Juan Quintela) - return ret instead of -EAGAIN in virtio-console (Juan) - use pre-allocated meta-buffer instead of allocating one each time (Juan) v6: - Continue write operation on EINTR instead of returning partial writes (which was a change from prev. behaviour) (Gerd) v5: - Fix bug pointed out by Gerd - Convert to using a struct for passing on handlers to qemu_chr_add_handlers() instead of passing each one individually. Simplifies patches. (Inspired by Juan's comment) - Re-arranged patches Amit Shah (6): virtio-console: Factor out common init between console and generic ports char: Add a QemuChrHandlers struct to initialise chardev handlers char: Let writers know how much data was written in case of errors char: Add qemu_chr_write_nb() for nonblocking writes char: unix/tcp: Add a non-blocking write handler virtio-console: Throttle virtio-serial-bus if we can't consume any more guest data gdbstub.c | 9 ++- hw/debugcon.c | 2 +- hw/escc.c | 9 ++- hw/etraxfs_ser.c | 13 +++- hw/mcf_uart.c | 9 ++- hw/pl011.c | 9 ++- hw/pxa2xx.c | 13 +++- hw/serial.c | 9 ++- hw/sh_serial.c | 12 +++- hw/syborg_serial.c | 9 ++- hw/usb-serial.c | 9 ++- hw/virtio-console.c | 156 +++++++++++++++++++++++++++++++++++++++++++------- hw/xen_console.c | 16 ++++-- hw/xilinx_uartlite.c | 11 +++- monitor.c | 19 +++++- net/slirp.c | 8 ++- net/socket.c | 4 +- qemu-char.c | 119 ++++++++++++++++++++++++++++++++------ qemu-char.h | 20 +++++- qemu_socket.h | 3 +- 20 files changed, 375 insertions(+), 84 deletions(-)