qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 2/3] monitor: add notifier list for monitor events


From: Anthony Liguori
Subject: [Qemu-devel] [PATCH 2/3] monitor: add notifier list for monitor events
Date: Fri, 26 Apr 2013 14:43:06 -0500

This lets us register for events internally within QEMU.

Signed-off-by: Anthony Liguori <address@hidden>
---
 include/qapi/qmp/qevents.h | 21 +++++++++++++++++++++
 monitor.c                  | 15 +++++++++++++++
 2 files changed, 36 insertions(+)
 create mode 100644 include/qapi/qmp/qevents.h

diff --git a/include/qapi/qmp/qevents.h b/include/qapi/qmp/qevents.h
new file mode 100644
index 0000000..2a91fd0
--- /dev/null
+++ b/include/qapi/qmp/qevents.h
@@ -0,0 +1,21 @@
+/*
+ * QEvent Support
+ *
+ * Copyright IBM, Corp. 2013
+ *
+ * Authors:
+ *  Anthony Liguori   <address@hidden>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#ifndef QMP_EVENTS_H
+#define QMP_EVENTS_H
+
+#include "qemu/notify.h"
+
+void qmp_add_event_notifier(Notifier *notifier);
+void qmp_del_event_notifier(Notifier *notifier);
+
+#endif
diff --git a/monitor.c b/monitor.c
index 332abe7..5168ea5 100644
--- a/monitor.c
+++ b/monitor.c
@@ -56,6 +56,7 @@
 #include "qapi/qmp/qjson.h"
 #include "qapi/qmp/json-streamer.h"
 #include "qapi/qmp/json-parser.h"
+#include "qapi/qmp/qevents.h"
 #include "qemu/osdep.h"
 #include "cpu.h"
 #include "trace.h"
@@ -502,6 +503,19 @@ QEMU_BUILD_BUG_ON(ARRAY_SIZE(monitor_event_names) != 
QEVENT_MAX)
 MonitorEventState monitor_event_state[QEVENT_MAX];
 QemuMutex monitor_event_state_lock;
 
+static NotifierList qmp_event_notifier_list =
+    NOTIFIER_LIST_INITIALIZER(qmp_event_notifier_list);
+
+void qmp_add_event_notifier(Notifier *notifier)
+{
+    notifier_list_add(&qmp_event_notifier_list, notifier);
+}
+
+void qmp_del_event_notifier(Notifier *notifier)
+{
+    notifier_remove(notifier);
+}
+
 /*
  * Emits the event to every monitor instance
  */
@@ -512,6 +526,7 @@ monitor_protocol_event_emit(MonitorEvent event,
     Monitor *mon;
 
     trace_monitor_protocol_event_emit(event, data);
+    notifier_list_notify(&qmp_event_notifier_list, data);
     QLIST_FOREACH(mon, &mon_list, entry) {
         if (monitor_ctrl_mode(mon) && qmp_cmd_mode(mon)) {
             monitor_json_emitter(mon, data);
-- 
1.8.0




reply via email to

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