From patchwork Thu Dec 23 12:42:49 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 76508 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id B3F25B7088 for ; Thu, 23 Dec 2010 23:44:15 +1100 (EST) Received: from localhost ([127.0.0.1]:39845 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PVkWi-0006Gi-UT for incoming@patchwork.ozlabs.org; Thu, 23 Dec 2010 07:44:12 -0500 Received: from [140.186.70.92] (port=55716 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PVkVO-0006E9-Q6 for qemu-devel@nongnu.org; Thu, 23 Dec 2010 07:42:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PVkVM-0000lx-Ry for qemu-devel@nongnu.org; Thu, 23 Dec 2010 07:42:50 -0500 Received: from mail-wy0-f173.google.com ([74.125.82.173]:49297) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PVkVM-0000j4-Ng for qemu-devel@nongnu.org; Thu, 23 Dec 2010 07:42:48 -0500 Received: by mail-wy0-f173.google.com with SMTP id 36so6559023wyg.4 for ; Thu, 23 Dec 2010 04:42:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:from:to:subject:date :message-id:x-mailer:in-reply-to:references; bh=Y5Cuu+gqcyNMf2xyp9EfKus5/p7Sh0y/lwXfPTKNBy8=; b=l6FC5wiTdv9uZoRnODcyA7dq54rrID3fk3QCH853RvVsT0XAWPakzXazCFEYc3eVZy 4CFrQ0yvP+amdlpfD+EWJ1OZLe7UTlVATxB2Sah6HaxmNO+dSivmPghxnNr1qbdo39rV DO0GCiIY/gOV6Jv4IkpRDIlCMnedy8oJo99m0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:to:subject:date:message-id:x-mailer:in-reply-to :references; b=moFtoPLfI+Y0qURVzXrZierR11fVD4oNsi12VSjGhmbimrYQ0COPC5fSyf9Myvtx/u 6yRhvW6M7IGQO52EOL2FTS18I8xvvfKYqduy9NmIFrnRuz3yG4UhWZA/s+Zh5MFPIE5A 3ba5cPrd76SrJWmPtIBqlomRyn51JTFjDnu6A= Received: by 10.227.155.145 with SMTP id s17mr5099950wbw.29.1293108168356; Thu, 23 Dec 2010 04:42:48 -0800 (PST) Received: from localhost.localdomain (93-34-160-115.ip50.fastwebnet.it [93.34.160.115]) by mx.google.com with ESMTPS id 11sm5273491wbj.19.2010.12.23.04.42.47 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 23 Dec 2010 04:42:47 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 23 Dec 2010 13:42:49 +0100 Message-Id: <1293108174-24895-4-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.7.3.2 In-Reply-To: <1293108174-24895-1-git-send-email-pbonzini@redhat.com> References: <1293108174-24895-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) Subject: [Qemu-devel] [PATCH 3/8] move atexit(term_exit) and O_NONBLOCK to qemu_chr_open_stdio X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- 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);