qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 12/12] char: enforce the use of qemu_chr_guest_open(


From: Anthony Liguori
Subject: [Qemu-devel] [PATCH 12/12] char: enforce the use of qemu_chr_guest_open()
Date: Mon, 1 Aug 2011 09:23:10 -0500

Signed-off-by: Anthony Liguori <address@hidden>
---
 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]