From c4d8632b034e776d04487bdcd9499a285b9c0a2a Mon Sep 17 00:00:00 2001
Message-Id: <c4d8632b034e776d04487bdcd9499a285b9c0a2a.1342518105.git.minovotn@redhat.com>
In-Reply-To: <27a73856ecc481c66c7afac8171f753887f32e31.1342518105.git.minovotn@redhat.com>
References: <27a73856ecc481c66c7afac8171f753887f32e31.1342518105.git.minovotn@redhat.com>
From: Pavel Hrdina <phrdina@redhat.com>
Date: Wed, 30 May 2012 19:35:20 +0200
Subject: [PATCH 02/41] add qemu_chr_set_echo

RH-Author: Pavel Hrdina <phrdina@redhat.com>
Message-id: <e53ce5ca99e57eb9c12d8eb05429bc45c11b3f91.1338401409.git.phrdina@redhat.com>
Patchwork-id: 39859
O-Subject: [RHEL-6.4 qemu-kvm PATCH 2/4] add qemu_chr_set_echo
Bugzilla: 806768
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
RH-Acked-by: Luiz Capitulino <lcapitulino@redhat.com>
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>

From: Paolo Bonzini <pbonzini@redhat.com>

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit c48855e1404e9b5857e07b7839f806fa98b4abdc)
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
---
 monitor.c   |    1 +
 qemu-char.c |    7 +++++++
 qemu-char.h |    2 ++
 3 files changed, 11 insertions(+), 1 deletions(-)

Signed-off-by: Michal Novotny <minovotn@redhat.com>
---
 monitor.c   |    1 +
 qemu-char.c |    7 +++++++
 qemu-char.h |    2 ++
 3 files changed, 10 insertions(+)

diff --git a/monitor.c b/monitor.c
index ade63ac..f82deca 100644
--- a/monitor.c
+++ b/monitor.c
@@ -4970,6 +4970,7 @@ void monitor_init(CharDriverState *chr, int flags)
 
         /* Control mode requires special handlers */
         qemu_chr_add_handlers(chr, &monitor_control_handlers, mon);
+        qemu_chr_set_echo(chr, true);
     } else {
         qemu_chr_add_handlers(chr, &monitor_handlers, mon);
     }
diff --git a/qemu-char.c b/qemu-char.c
index e88cec4..ac29e6c 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2728,6 +2728,13 @@ void qemu_chr_guest_close(struct CharDriverState *chr)
     }
 }
 
+void qemu_chr_set_echo(struct CharDriverState *chr, bool echo)
+{
+    if (chr->chr_set_echo) {
+        chr->chr_set_echo(chr, echo);
+    }
+}
+
 void qemu_chr_close(CharDriverState *chr)
 {
     QTAILQ_REMOVE(&chardevs, chr, next);
diff --git a/qemu-char.h b/qemu-char.h
index f3f8b56..b6d34b2 100644
--- a/qemu-char.h
+++ b/qemu-char.h
@@ -70,6 +70,7 @@ struct CharDriverState {
     void (*chr_accept_input)(struct CharDriverState *chr);
     void (*chr_guest_open)(struct CharDriverState *chr);
     void (*chr_guest_close)(struct CharDriverState *chr);
+    void (*chr_set_echo)(struct CharDriverState *chr, bool echo);
     void *opaque;
     QEMUBH *bh;
     char *label;
@@ -94,6 +95,7 @@ CharDriverState *qemu_chr_open_opts(QemuOpts *opts,
 CharDriverState *qemu_chr_open(const char *label, const char *filename, void (*init)(struct CharDriverState *s));
 void qemu_chr_guest_open(struct CharDriverState *chr);
 void qemu_chr_guest_close(struct CharDriverState *chr);
+void qemu_chr_set_echo(struct CharDriverState *chr, bool echo);
 void qemu_chr_close(CharDriverState *chr);
 void qemu_chr_printf(CharDriverState *s, const char *fmt, ...);
 int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len);
-- 
1.7.10.4

