On Mon, Aug 01, 2011 at 09:23:10AM -0500, Anthony Liguori wrote: > Signed-off-by: Anthony Liguori <aligu...@us.ibm.com>
Title should be "fe_open", not guest_open. > --- > qemu-char.c | 10 ++++++++++ > qemu-char.h | 2 ++ > 2 files changed, 12 insertions(+), 0 deletions(-) > > diff --git a/qemu-char.c b/qemu-char.c > index fb7c937..5e62795 100644 > --- a/qemu-char.c > +++ b/qemu-char.c > @@ -206,6 +206,8 @@ int qemu_chr_fe_write(CharDriverState *s, const uint8_t > *buf, int len) > int ret; > bool is_empty; > > + assert(s->fe_opened > 0); > + > is_empty = char_queue_get_empty(&s->fe_tx); > > ret = char_queue_write(&s->fe_tx, buf, len); > @@ -228,6 +230,8 @@ int qemu_chr_fe_read(CharDriverState *s, uint8_t *buf, > int len) > bool is_full; > int ret; > > + assert(s->fe_opened > 0); > + > is_full = (char_queue_get_avail(&s->be_tx) == 0); > > ret = char_queue_read(&s->be_tx, buf, len); > @@ -249,6 +253,8 @@ void qemu_chr_fe_set_handlers(CharDriverState *s, > IOEventHandler *chr_event, > void *opaque) > { > + assert(s->fe_opened > 0); > + > if (!opaque && !chr_read && !chr_write && !chr_event) { > /* chr driver being released. */ > ++s->avail_connections; > @@ -2822,6 +2828,8 @@ void qemu_chr_set_echo(struct CharDriverState *chr, > bool echo) > > void qemu_chr_fe_open(struct CharDriverState *chr) > { > + chr->fe_opened++; > + > if (chr->chr_guest_open) { > chr->chr_guest_open(chr); > } > @@ -2832,6 +2840,8 @@ void qemu_chr_fe_close(struct CharDriverState *chr) > if (chr->chr_guest_close) { > chr->chr_guest_close(chr); > } > + > + chr->fe_opened--; > } > > void qemu_chr_close(CharDriverState *chr) > diff --git a/qemu-char.h b/qemu-char.h > index 8b37fcf..b910c5e 100644 > --- a/qemu-char.h > +++ b/qemu-char.h > @@ -88,6 +88,8 @@ struct CharDriverState { > int opened; > int avail_connections; > > + int fe_opened; > + > CharQueue fe_tx; > CharQueue be_tx; > > -- > 1.7.4.1 > >