From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50011) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UK6mQ-0003Tr-CY for qemu-devel@nongnu.org; Mon, 25 Mar 2013 08:45:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UK6mO-0002iP-Oz for qemu-devel@nongnu.org; Mon, 25 Mar 2013 08:45:38 -0400 Received: from mail-ia0-x231.google.com ([2607:f8b0:4001:c02::231]:52179) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UK6mO-0002iF-L3 for qemu-devel@nongnu.org; Mon, 25 Mar 2013 08:45:36 -0400 Received: by mail-ia0-f177.google.com with SMTP id w33so2269342iag.8 for ; Mon, 25 Mar 2013 05:45:35 -0700 (PDT) From: Anthony Liguori In-Reply-To: <1364128793-12689-4-git-send-email-hdegoede@redhat.com> References: <1364128793-12689-1-git-send-email-hdegoede@redhat.com> <1364128793-12689-4-git-send-email-hdegoede@redhat.com> Date: Mon, 25 Mar 2013 07:45:09 -0500 Message-ID: <87d2unodgq.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Qemu-devel] [PATCH 3/8] qemu-char: Add fe_open tracking List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Hans de Goede , qemu-devel@nongnu.org Cc: Amit Shah Hans de Goede writes: > Add tracking of the fe_open state to struct CharDriverState. > > Signed-off-by: Hans de Goede > --- > include/char/char.h | 1 + > qemu-char.c | 2 ++ > 2 files changed, 3 insertions(+) > > diff --git a/include/char/char.h b/include/char/char.h > index dd8f39a..3174575 100644 > --- a/include/char/char.h > +++ b/include/char/char.h > @@ -75,6 +75,7 @@ struct CharDriverState { > char *label; > char *filename; > int be_open; > + int fe_open; > int avail_connections; > QemuOpts *opts; > QTAILQ_ENTRY(CharDriverState) next; > diff --git a/qemu-char.c b/qemu-char.c > index 55795d7..554d72f 100644 > --- a/qemu-char.c > +++ b/qemu-char.c > @@ -3385,6 +3385,7 @@ void qemu_chr_fe_set_echo(struct CharDriverState *chr, bool echo) > > void qemu_chr_fe_open(struct CharDriverState *chr) > { > + chr->fe_open = 1; > if (chr->chr_guest_open) { > chr->chr_guest_open(chr); > } > @@ -3392,6 +3393,7 @@ void qemu_chr_fe_open(struct CharDriverState *chr) > > void qemu_chr_fe_close(struct CharDriverState *chr) > { > + chr->fe_open = 0; Even though this gets rewritten later on, you should avoid calling the callback when open is called when fe_open=1. Something like if (!chr->fe_open) { return; } Then later when this becomes set_fe_open() the backend doesn't need to deal with double open/close. Regards, Anthony Liguori > if (chr->chr_guest_close) { > chr->chr_guest_close(chr); > } > -- > 1.8.1.4