diff options
| author | Gonglei | 2014-08-11 11:34:20 +0200 |
|---|---|---|
| committer | Stefan Hajnoczi | 2014-08-15 19:03:13 +0200 |
| commit | 4ff12bdb1d7c74d95b7315f0a00d17e5cea32249 (patch) | |
| tree | 90189b814ba724298733a15160324af8fdcf6e91 | |
| parent | cmd646: synchronise UDMA interrupt status with DMA interrupt status (diff) | |
| download | qemu-4ff12bdb1d7c74d95b7315f0a00d17e5cea32249.tar.gz qemu-4ff12bdb1d7c74d95b7315f0a00d17e5cea32249.tar.xz qemu-4ff12bdb1d7c74d95b7315f0a00d17e5cea32249.zip | |
qemu-char: using qemu_set_nonblock() instead of fcntl(O_NONBLOCK)
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>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
| -rw-r--r-- | qemu-char.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/qemu-char.c b/qemu-char.c index 6964a2d9fd..b1e6a0a9b8 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); |
