Commit 0369364b authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Anthony Liguori
Browse files

move atexit(term_exit) and O_NONBLOCK to qemu_chr_open_stdio



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: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
parent c48855e1
......@@ -716,7 +716,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)
{
......@@ -728,10 +727,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;
......@@ -745,11 +741,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)
......@@ -766,6 +757,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);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment