From: Paolo Bonzini <pbonzini@redhat.com>
To: "Roger Pau Monné" <roger.pau@citrix.com>,
qemu-devel@nongnu.org, xen-devel@lists.xenproject.org
Cc: "Peter Crosthwaite" <peter.crosthwaite@xilinx.com>,
"Michael Tokarev" <mjt@tls.msk.ru>,
"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH v2 3/3] serial: poll the serial console with G_IO_HUP
Date: Mon, 30 Jun 2014 14:23:03 +0200 [thread overview]
Message-ID: <53B156A7.8010306@redhat.com> (raw)
In-Reply-To: <53B14359.9050902@citrix.com>
Il 30/06/2014 13:00, Roger Pau Monné ha scritto:
> Do I need to resend this? it's been more than a month without review.
I'll send a pull request for it.
Sorry for the delay.
Paolo
> On 13/06/14 17:35, Roger Pau Monné wrote:
>> Ping?
>>
>> On 23/05/14 17:57, Roger Pau Monne wrote:
>>> On FreeBSD polling a master pty while the other end is not connected
>>> with G_IO_OUT only results in an endless wait. This is different from
>>> the Linux behaviour, that returns immediately. In order to demonstrate
>>> this, I have the following example code:
>>>
>>> http://xenbits.xen.org/people/royger/test_poll.c
>>>
>>> When executed on Linux:
>>>
>>> $ ./test_poll
>>> In callback
>>>
>>> On FreeBSD instead, the callback never gets called:
>>>
>>> $ ./test_poll
>>>
>>> So, in order to workaround this, poll the source with G_IO_HUP (which
>>> makes the code behave the same way on both Linux and FreeBSD).
>>>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
>>> Cc: Michael Tokarev <mjt@tls.msk.ru>
>>> Cc: "Andreas Färber" <afaerber@suse.de>
>>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>>> Cc: xen-devel@lists.xenproject.org
>>> ---
>>> Changes since v1:
>>> - Fix other users of qemu_chr_fe_add_watch to use G_IO_HUP.
>>> ---
>>> hw/char/serial.c | 2 +-
>>> hw/char/virtio-console.c | 3 ++-
>>> hw/usb/redirect.c | 2 +-
>>> monitor.c | 2 +-
>>> 4 files changed, 5 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/hw/char/serial.c b/hw/char/serial.c
>>> index f4d167f..2a2c9e5 100644
>>> --- a/hw/char/serial.c
>>> +++ b/hw/char/serial.c
>>> @@ -246,7 +246,7 @@ static gboolean serial_xmit(GIOChannel *chan, GIOCondition cond, void *opaque)
>>> serial_receive1(s, &s->tsr, 1);
>>> } else if (qemu_chr_fe_write(s->chr, &s->tsr, 1) != 1) {
>>> if (s->tsr_retry >= 0 && s->tsr_retry < MAX_XMIT_RETRY &&
>>> - qemu_chr_fe_add_watch(s->chr, G_IO_OUT, serial_xmit, s) > 0) {
>>> + qemu_chr_fe_add_watch(s->chr, G_IO_OUT|G_IO_HUP, serial_xmit, s) > 0) {
>>> s->tsr_retry++;
>>> return FALSE;
>>> }
>>> diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c
>>> index 6c8be0f..38e290a 100644
>>> --- a/hw/char/virtio-console.c
>>> +++ b/hw/char/virtio-console.c
>>> @@ -69,7 +69,8 @@ static ssize_t flush_buf(VirtIOSerialPort *port,
>>> if (!k->is_console) {
>>> virtio_serial_throttle_port(port, true);
>>> if (!vcon->watch) {
>>> - vcon->watch = qemu_chr_fe_add_watch(vcon->chr, G_IO_OUT,
>>> + vcon->watch = qemu_chr_fe_add_watch(vcon->chr,
>>> + G_IO_OUT|G_IO_HUP,
>>> chr_write_unblocked, vcon);
>>> }
>>> }
>>> diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
>>> index 287a505..06e757d 100644
>>> --- a/hw/usb/redirect.c
>>> +++ b/hw/usb/redirect.c
>>> @@ -284,7 +284,7 @@ static int usbredir_write(void *priv, uint8_t *data, int count)
>>> r = qemu_chr_fe_write(dev->cs, data, count);
>>> if (r < count) {
>>> if (!dev->watch) {
>>> - dev->watch = qemu_chr_fe_add_watch(dev->cs, G_IO_OUT,
>>> + dev->watch = qemu_chr_fe_add_watch(dev->cs, G_IO_OUT|G_IO_HUP,
>>> usbredir_write_unblocked, dev);
>>> }
>>> if (r < 0) {
>>> diff --git a/monitor.c b/monitor.c
>>> index 593679a..ae1c539 100644
>>> --- a/monitor.c
>>> +++ b/monitor.c
>>> @@ -304,7 +304,7 @@ void monitor_flush(Monitor *mon)
>>> mon->outbuf = tmp;
>>> }
>>> if (mon->watch == 0) {
>>> - mon->watch = qemu_chr_fe_add_watch(mon->chr, G_IO_OUT,
>>> + mon->watch = qemu_chr_fe_add_watch(mon->chr, G_IO_OUT|G_IO_HUP,
>>> monitor_unblocked, mon);
>>> }
>>> }
>>>
>>
>>
>
next prev parent reply other threads:[~2014-06-30 12:23 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-23 15:57 [Qemu-devel] [PATCH v2 0/3] qemu-freebsd: fixes for running Xen guests Roger Pau Monne
2014-05-23 15:57 ` [Qemu-devel] [PATCH v2 1/3] xen: fix usage of ENODATA Roger Pau Monne
2014-05-27 17:18 ` Stefano Stabellini
[not found] ` <alpine.DEB.2.02.1405271816100.4779@kaball.uk.xensource.com>
2014-05-27 17:26 ` Roger Pau Monné
[not found] ` <5384CADF.8020003@citrix.com>
2014-05-28 11:28 ` [Qemu-devel] " Stefano Stabellini
2014-05-23 15:57 ` Roger Pau Monne
2014-05-23 15:57 ` [Qemu-devel] [PATCH v2 2/3] tap-bsd: implement a FreeBSD only version of tap_open Roger Pau Monne
2014-05-23 15:57 ` Roger Pau Monne
2014-05-27 13:29 ` Stefan Hajnoczi
2014-07-22 11:46 ` [Qemu-devel] " Roger Pau Monné
2014-07-22 11:46 ` Roger Pau Monné
2014-07-22 12:26 ` [Qemu-devel] " Stefano Stabellini
2014-07-23 10:38 ` Stefan Hajnoczi
2014-07-23 10:38 ` Stefan Hajnoczi
2014-07-23 14:00 ` Roger Pau Monné
2014-07-23 14:03 ` Stefano Stabellini
2014-07-23 14:03 ` [Qemu-devel] " Stefano Stabellini
2014-07-23 14:00 ` Roger Pau Monné
2014-07-22 12:26 ` Stefano Stabellini
2014-05-23 15:57 ` [Qemu-devel] [PATCH v2 3/3] serial: poll the serial console with G_IO_HUP Roger Pau Monne
2014-06-13 15:35 ` Roger Pau Monné
2014-06-30 11:00 ` Roger Pau Monné
2014-06-30 12:23 ` Paolo Bonzini [this message]
2014-06-30 12:23 ` Paolo Bonzini
2014-06-30 11:00 ` Roger Pau Monné
2014-06-13 15:35 ` Roger Pau Monné
2014-05-23 15:57 ` Roger Pau Monne
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=53B156A7.8010306@redhat.com \
--to=pbonzini@redhat.com \
--cc=afaerber@suse.de \
--cc=mjt@tls.msk.ru \
--cc=peter.crosthwaite@xilinx.com \
--cc=qemu-devel@nongnu.org \
--cc=roger.pau@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.