From: Gerd Hoffmann <kraxel@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Amit Shah <amit.shah@redhat.com>,
Paul Brook <paul@codesourcery.com>,
qemu list <qemu-devel@nongnu.org>,
Juan Quintela <quintela@redhat.com>
Subject: [Qemu-devel] Re: [PATCH v7 4/6] char: Add qemu_chr_write_nb() for nonblocking writes
Date: Wed, 05 May 2010 20:40:51 +0200 [thread overview]
Message-ID: <4BE1BBB3.8050006@redhat.com> (raw)
In-Reply-To: <4BE16FB5.6040708@codemonkey.ws>
>> + return s->chr_write_nb(s, buf, len);
>> +}
>
> I really dislike the idea of adding another function for this.
Having a explicit function for non-blocking mode IMHO is much better.
It makes things more clear when reading the code.
Previous approach was to check for O_NONBLOCK (extra syscall) and behave
differently depending on whenever it is set or not (too much hidden magic).
> Can you
> explain why you need this functionality for virtio-console and why this
> functionality isn't needed for everything else?
virtio-console is just the first user. 16550 emulation can use that
too. With the blocking interface you'll stall the guest (sitting in the
blocking write syscall) in case the outgoing pipe is full. With the
non-blocking interface you can simply delay the "you can send more data"
signal (update status register + raise IRQ) until you can actually
accept more data. Meanwhile the guest can continue to run and do
something else. Basically it allows to implement sane flow control.
cheers,
Gerd
next prev parent reply other threads:[~2010-05-05 18:41 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-04 21:39 [Qemu-devel] [PATCH v7 0/6] Amit Shah
2010-05-04 21:39 ` [Qemu-devel] [PATCH v7 1/6] virtio-console: Factor out common init between console and generic ports Amit Shah
2010-05-04 21:39 ` [Qemu-devel] [PATCH v7 2/6] char: Add a QemuChrHandlers struct to initialise chardev handlers Amit Shah
2010-05-04 21:39 ` [Qemu-devel] [PATCH v7 3/6] char: Let writers know how much data was written in case of errors Amit Shah
2010-05-04 21:39 ` [Qemu-devel] [PATCH v7 4/6] char: Add qemu_chr_write_nb() for nonblocking writes Amit Shah
2010-05-04 21:39 ` [Qemu-devel] [PATCH v7 5/6] char: unix/tcp: Add a non-blocking write handler Amit Shah
2010-05-04 21:39 ` [Qemu-devel] [PATCH v7 6/6] virtio-console: Throttle virtio-serial-bus if we can't consume any more guest data Amit Shah
2010-05-05 13:16 ` [Qemu-devel] Re: [PATCH v7 4/6] char: Add qemu_chr_write_nb() for nonblocking writes Anthony Liguori
2010-05-05 13:22 ` Amit Shah
2010-05-05 13:34 ` Paul Brook
2010-05-05 13:53 ` Anthony Liguori
2010-05-05 14:10 ` Paul Brook
2010-05-05 18:43 ` Gerd Hoffmann
2010-05-05 18:49 ` Anthony Liguori
2010-05-05 19:16 ` Gerd Hoffmann
2010-05-05 19:33 ` Anthony Liguori
2010-05-06 7:11 ` Gerd Hoffmann
2010-05-05 18:40 ` Gerd Hoffmann [this message]
2010-05-05 18:48 ` Anthony Liguori
2010-05-05 13:15 ` [Qemu-devel] Re: [PATCH v7 3/6] char: Let writers know how much data was written in case of errors Anthony Liguori
2010-05-05 13:23 ` Amit Shah
2010-05-05 13:54 ` Anthony Liguori
2010-05-05 14:06 ` Amit Shah
2010-05-05 13:13 ` [Qemu-devel] Re: [PATCH v7 2/6] char: Add a QemuChrHandlers struct to initialise chardev handlers Anthony Liguori
2010-05-05 13:25 ` Amit Shah
2010-05-05 13:59 ` Anthony Liguori
2010-05-04 21:41 ` [Qemu-devel] Re: [PATCH v7 0/6] char: non-blocking writes, virtio-console flow control Amit Shah
2010-05-05 11:18 ` [Qemu-devel] Re: [PATCH v7 0/6] Juan Quintela
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BE1BBB3.8050006@redhat.com \
--to=kraxel@redhat.com \
--cc=amit.shah@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=paul@codesourcery.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).