[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/8] move atexit(term_exit) and O_NONBLOCK to qemu_c
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 3/8] move atexit(term_exit) and O_NONBLOCK to qemu_chr_open_stdio |
Date: |
Thu, 23 Dec 2010 13:42:49 +0100 |
In the next patch, term_init will be changed to enable or disable
echo at will. Move extraneous stuff out of it.
Signed-off-by: Paolo Bonzini <address@hidden>
---
qemu-char.c | 18 ++++++++----------
1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/qemu-char.c b/qemu-char.c
index e2a5e91..cc20fa0 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -715,7 +715,6 @@ static void stdio_read(void *opaque)
/* init terminal so that we can grab keys */
static struct termios oldtty;
static int old_fd0_flags;
-static int term_atexit_done;
static void term_exit(void)
{
@@ -727,10 +726,7 @@ static void term_init(QemuOpts *opts)
{
struct termios tty;
- tcgetattr (0, &tty);
- oldtty = tty;
- old_fd0_flags = fcntl(0, F_GETFL);
-
+ tty = oldtty;
tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
|INLCR|IGNCR|ICRNL|IXON);
tty.c_oflag |= OPOST;
@@ -744,11 +740,6 @@ static void term_init(QemuOpts *opts)
tty.c_cc[VTIME] = 0;
tcsetattr (0, TCSANOW, &tty);
-
- if (!term_atexit_done++)
- atexit(term_exit);
-
- fcntl(0, F_SETFL, O_NONBLOCK);
}
static void qemu_chr_close_stdio(struct CharDriverState *chr)
@@ -765,6 +756,13 @@ static CharDriverState *qemu_chr_open_stdio(QemuOpts *opts)
if (stdio_nb_clients >= STDIO_MAX_CLIENTS)
return NULL;
+ if (stdio_nb_clients == 0) {
+ old_fd0_flags = fcntl(0, F_GETFL);
+ tcgetattr (0, &oldtty);
+ fcntl(0, F_SETFL, O_NONBLOCK);
+ atexit(term_exit);
+ }
+
chr = qemu_chr_open_fd(0, 1);
chr->chr_close = qemu_chr_close_stdio;
qemu_set_fd_handler2(0, stdio_read_poll, stdio_read, NULL, chr);
--
1.7.3.2
- [Qemu-devel] [PATCH 0/8] make -qmp stdio usable, Paolo Bonzini, 2010/12/23
- [Qemu-devel] [PATCH 1/8] remove broken code for tty, Paolo Bonzini, 2010/12/23
- [Qemu-devel] [PATCH 2/8] add qemu_chr_set_echo, Paolo Bonzini, 2010/12/23
- [Qemu-devel] [PATCH 3/8] move atexit(term_exit) and O_NONBLOCK to qemu_chr_open_stdio,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 4/8] add set_echo implementation for qemu_chr_stdio, Paolo Bonzini, 2010/12/23
- [Qemu-devel] [PATCH 5/8] create TextConsole together with the CharDeviceState, Paolo Bonzini, 2010/12/23
- [Qemu-devel] [PATCH 6/8] add set_echo implementation for text consoles, Paolo Bonzini, 2010/12/23
- [Qemu-devel] [PATCH 8/8] fix QemuOpts leak, Paolo Bonzini, 2010/12/23
- [Qemu-devel] [PATCH 7/8] remove text_console_opts, Paolo Bonzini, 2010/12/23