qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] QMP: Emit asynchronous events on all QMP monito


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] QMP: Emit asynchronous events on all QMP monitors
Date: Tue, 19 Jan 2010 16:40:46 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Lightning/1.0pre Thunderbird/3.0

On 01/15/2010 08:34 AM, Adam Litke wrote:
When using a control/QMP monitor in tandem with a regular monitor, asynchronous
messages can get lost depending on the order of the QEMU program arguments.
QEMU events issued by monitor_protocol_event() always go to cur_mon.  If the
user monitor was specified on the command line first (or it has ,default), the
message will be directed to the user monitor (not the QMP monitor).
Additionally, only one QMP session is currently able to receive async messages.

To avoid this confusion, scan through the list of monitors and emit the message
on each QMP monitor.

Signed-off-by: Adam Litke<address@hidden>

Applied.  Thanks.

Regards,

Anthony Liguori
diff --git a/monitor.c b/monitor.c
index 134ed15..06c8bf0 100644
--- a/monitor.c
+++ b/monitor.c
@@ -334,13 +334,10 @@ void monitor_protocol_event(MonitorEvent event, QObject 
*data)
  {
      QDict *qmp;
      const char *event_name;
-    Monitor *mon = cur_mon;
+    Monitor *mon;

      assert(event<  QEVENT_MAX);

-    if (!monitor_ctrl_mode(mon))
-        return;
-
      switch (event) {
          case QEVENT_DEBUG:
              event_name = "DEBUG";
@@ -373,7 +370,12 @@ void monitor_protocol_event(MonitorEvent event, QObject 
*data)
          qdict_put_obj(qmp, "data", data);
      }

-    monitor_json_emitter(mon, QOBJECT(qmp));
+    QLIST_FOREACH(mon,&mon_list, entry) {
+        if (!monitor_ctrl_mode(mon))
+            return;
+
+        monitor_json_emitter(mon, QOBJECT(qmp));
+    }
      QDECREF(qmp);
  }








reply via email to

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