From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NjgeL-0008Dz-54 for qemu-devel@nongnu.org; Mon, 22 Feb 2010 17:21:09 -0500 Received: from [199.232.76.173] (port=59367 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NjgeK-0008Dp-Fc for qemu-devel@nongnu.org; Mon, 22 Feb 2010 17:21:08 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NjgeJ-0005Sh-6k for qemu-devel@nongnu.org; Mon, 22 Feb 2010 17:21:08 -0500 Received: from qw-out-1920.google.com ([74.125.92.150]:47989) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NjgeI-0005Sd-VB for qemu-devel@nongnu.org; Mon, 22 Feb 2010 17:21:07 -0500 Received: by qw-out-1920.google.com with SMTP id 4so499321qwk.4 for ; Mon, 22 Feb 2010 14:21:06 -0800 (PST) Message-ID: <4B83034E.8020309@codemonkey.ws> Date: Mon, 22 Feb 2010 16:21:02 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v2] add close callback for tty-based char device References: <1265851637-13035-1-git-send-email-daahern@cisco.com> In-Reply-To: <1265851637-13035-1-git-send-email-daahern@cisco.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Ahern Cc: qemu-devel@nongnu.org On 02/10/2010 07:27 PM, David Ahern wrote: > v1 -> v2 coding style changes > > Add a tty close callback. Right now if a guest device that is connected > to a tty-based chardev in the host is removed, the tty is not closed. > With this patch it is closed. > > Example use case is connecting an emulated USB serial cable in the guest > to ttyS0 of the host using the monitor command: > > usb_add serial::/dev/ttyS0 > > and then removing the device with: > > usb_del serial::/dev/ttyS0 > > Signed-off-by: David Ahern > Applied. Thanks. Regards, Anthony Liguori > --- > qemu-char.c | 17 +++++++++++++++++ > 1 files changed, 17 insertions(+), 0 deletions(-) > > diff --git a/qemu-char.c b/qemu-char.c > index 75dbf66..4169492 100644 > --- a/qemu-char.c > +++ b/qemu-char.c > @@ -1173,6 +1173,22 @@ static int tty_serial_ioctl(CharDriverState *chr, int cmd, void *arg) > return 0; > } > > +static void qemu_chr_close_tty(CharDriverState *chr) > +{ > + FDCharDriver *s = chr->opaque; > + int fd = -1; > + > + if (s) { > + fd = s->fd_in; > + } > + > + fd_chr_close(chr); > + > + if (fd>= 0) { > + close(fd); > + } > +} > + > static CharDriverState *qemu_chr_open_tty(QemuOpts *opts) > { > const char *filename = qemu_opt_get(opts, "path"); > @@ -1190,6 +1206,7 @@ static CharDriverState *qemu_chr_open_tty(QemuOpts *opts) > return NULL; > } > chr->chr_ioctl = tty_serial_ioctl; > + chr->chr_close = qemu_chr_close_tty; > return chr; > } > #else /* ! __linux__&& ! __sun__ */ >