Hello, This version of the series adds proper handling of nonblocking when the backend managed to flush out some data but not all (ret > 0 && ret < len).
Just the unix/tcp backends have been updated to be nonblocking, but it's easy to add support to the other backends, as the last patch in the series shows. I'll work on that once this is applied. The virtio-console code will be the first user of this work, that series will be sent shortly. This series depends on the virtio-serial fixes and enhancements series that I sent out a short while back. Please review and apply, Amit Shah (5): char: Add a QemuChrHandlers struct to initialise chardev handlers char: Introduce char_set/remove_fd_handlers() char: Add framework for a 'write unblocked' callback char: Update send_all() to handle nonblocking chardev write requests char: Equip the unix/tcp backend to handle nonblocking writes gdbstub.c | 9 ++- hw/debugcon.c | 2 +- hw/escc.c | 9 ++- hw/etraxfs_ser.c | 13 +++- hw/ivshmem.c | 28 ++++++-- 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 | 9 ++- hw/xen_console.c | 16 +++-- hw/xilinx_uartlite.c | 11 +++- monitor.c | 19 ++++- net/slirp.c | 8 ++- net/socket.c | 4 +- qemu-char.c | 196 ++++++++++++++++++++++++++++++++++++++++---------- qemu-char.h | 17 ++++- qemu_socket.h | 2 +- 21 files changed, 321 insertions(+), 92 deletions(-) -- 1.7.3.4