From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:41694) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RkKR3-000355-1x for qemu-devel@nongnu.org; Mon, 09 Jan 2012 13:59:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RkKQx-0006oo-FA for qemu-devel@nongnu.org; Mon, 09 Jan 2012 13:59:09 -0500 Received: from mail-we0-f173.google.com ([74.125.82.173]:38584) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RkKQw-0006bC-VR for qemu-devel@nongnu.org; Mon, 09 Jan 2012 13:59:03 -0500 Received: by mail-we0-f173.google.com with SMTP id b10so3538821wer.4 for ; Mon, 09 Jan 2012 10:59:02 -0800 (PST) From: Andrzej Zaborowski Date: Mon, 9 Jan 2012 08:57:54 +0100 Message-Id: <1326095876-31319-5-git-send-email-balrogg@gmail.com> In-Reply-To: <1326095876-31319-1-git-send-email-balrogg@gmail.com> References: <1326095876-31319-1-git-send-email-balrogg@gmail.com> Subject: [Qemu-devel] [PATCH 4/6] virtio-serial: Call .guest_ready when new space is available in the queue. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Without that it's impossible to write a virtio-serial port driver that sends any buffers bigger than a couple kilobytes, other than by polling to check when space in the queue becomes available. Signed-off-by: Andrzej Zaborowski --- hw/virtio-serial-bus.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c index 3a9004a..72bbe78 100644 --- a/hw/virtio-serial-bus.c +++ b/hw/virtio-serial-bus.c @@ -495,6 +495,14 @@ static void handle_output(VirtIODevice *vdev, VirtQueue *vq) static void handle_input(VirtIODevice *vdev, VirtQueue *vq) { + VirtIOSerial *vser = DO_UPCAST(VirtIOSerial, vdev, vdev); + VirtIOSerialPort *port = find_port_by_vq(vser, vq); + VirtIOSerialPortInfo *info = + port ? DO_UPCAST(VirtIOSerialPortInfo, qdev, port->dev.info) : NULL; + + if (info && info->guest_ready) { + info->guest_ready(port); + } } static uint32_t get_features(VirtIODevice *vdev, uint32_t features) -- 1.7.4.4