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. Amit Shah (5): 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: Factor out common init between console and generic ports virtio-console: Throttle virtio-serial-bus if we can't consume any more guest data gdbstub.c | 2 +- hw/debugcon.c | 2 +- hw/escc.c | 3 +- hw/etraxfs_ser.c | 4 +- hw/mcf_uart.c | 2 +- hw/pl011.c | 2 +- hw/pxa2xx.c | 2 +- hw/serial.c | 2 +- hw/sh_serial.c | 2 +- hw/syborg_serial.c | 3 +- hw/usb-serial.c | 2 +- hw/virtio-console.c | 156 +++++++++++++++++++++++++++++++++++++++++++------- hw/xen_console.c | 7 +- hw/xilinx_uartlite.c | 5 +- monitor.c | 4 +- net/slirp.c | 2 +- net/socket.c | 4 +- qemu-char.c | 94 +++++++++++++++++++++++++++--- qemu-char.h | 9 +++ qemu_socket.h | 3 +- 20 files changed, 257 insertions(+), 53 deletions(-)