Message ID | 1407749661-11640-2-git-send-email-arei.gonglei@huawei.com |
---|---|
State | New |
Headers | show |
On 08/11/2014 03:34 AM, arei.gonglei@huawei.com wrote: > From: Gonglei <arei.gonglei@huawei.com> > > Technically, fcntl(soc, F_SETFL, O_NONBLOCK) > is incorrect since it clobbers all other file flags. > We can use F_GETFL to get the current flags, set or > clear the O_NONBLOCK flag, then use F_SETFL to set the flags. > > Using the qemu_set_nonblock() wrapper. > > Signed-off-by: Wangxin <wangxinxin.wang@huawei.com> > Signed-off-by: Gonglei <arei.gonglei@huawei.com> > --- > qemu-char.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/qemu-char.c b/qemu-char.c index 6964a2d..b1e6a0a 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -975,7 +975,7 @@ static CharDriverState *qemu_chr_open_fd(int fd_in, int fd_out) s = g_malloc0(sizeof(FDCharDriver)); s->fd_in = io_channel_from_fd(fd_in); s->fd_out = io_channel_from_fd(fd_out); - fcntl(fd_out, F_SETFL, O_NONBLOCK); + qemu_set_nonblock(fd_out); s->chr = chr; chr->opaque = s; chr->chr_add_watch = fd_chr_add_watch; @@ -1062,7 +1062,7 @@ static CharDriverState *qemu_chr_open_stdio(ChardevStdio *opts) } old_fd0_flags = fcntl(0, F_GETFL); tcgetattr (0, &oldtty); - fcntl(0, F_SETFL, O_NONBLOCK); + qemu_set_nonblock(0); atexit(term_exit); chr = qemu_chr_open_fd(0, 1);