[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 12/11] suspend: add qmp events
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 12/11] suspend: add qmp events |
Date: |
Fri, 10 Feb 2012 13:43:21 +0100 |
Send qmp events on suspend and wakeup so libvirt
has a chance to track the vm state.
Signed-off-by: Gerd Hoffmann <address@hidden>
---
monitor.c | 6 ++++++
monitor.h | 2 ++
vl.c | 15 +++++++++++++++
3 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/monitor.c b/monitor.c
index aadbdcb..e6f5fad 100644
--- a/monitor.c
+++ b/monitor.c
@@ -485,6 +485,12 @@ void monitor_protocol_event(MonitorEvent event, QObject
*data)
case QEVENT_BLOCK_JOB_CANCELLED:
event_name = "BLOCK_JOB_CANCELLED";
break;
+ case QEVENT_SUSPEND:
+ event_name = "SUSPEND";
+ break;
+ case QEVENT_WAKEUP:
+ event_name = "WAKEUP";
+ break;
default:
abort();
break;
diff --git a/monitor.h b/monitor.h
index b72ea07..9df3bab 100644
--- a/monitor.h
+++ b/monitor.h
@@ -38,6 +38,8 @@ typedef enum MonitorEvent {
QEVENT_SPICE_DISCONNECTED,
QEVENT_BLOCK_JOB_COMPLETED,
QEVENT_BLOCK_JOB_CANCELLED,
+ QEVENT_SUSPEND,
+ QEVENT_WAKEUP,
QEVENT_MAX,
} MonitorEvent;
diff --git a/vl.c b/vl.c
index 5095e06..28ca323 100644
--- a/vl.c
+++ b/vl.c
@@ -1411,6 +1411,7 @@ void qemu_system_suspend_request(void)
}
cpu_stop_current();
notifier_list_notify(&suspend_notifiers, NULL);
+ monitor_protocol_event(QEVENT_SUSPEND, NULL);
is_suspended = true;
}
@@ -1421,12 +1422,26 @@ void qemu_register_suspend_notifier(Notifier *notifier)
void qemu_system_wakeup_request(WakeupReason reason)
{
+ static const char *names[] = {
+ [QEMU_WAKEUP_REASON_OTHER] = "other",
+ [QEMU_WAKEUP_REASON_RTC] = "rtc",
+ [QEMU_WAKEUP_REASON_PMTIMER] = "pmtimer",
+ };
+ const char *name;
+ QObject *data;
+
if (!is_suspended) {
return;
}
if (!(wakeup_reason_mask & (1 << reason))) {
return;
}
+
+ name = (reason < ARRAY_SIZE(names)) ? names[reason] : "unknown";
+ data = qobject_from_jsonf("{ 'reason': %s }", name);
+ monitor_protocol_event(QEVENT_WAKEUP, data);
+ qobject_decref(data);
+
notifier_list_notify(&wakeup_notifiers, &reason);
reset_requested = 1;
qemu_notify_event();
--
1.7.1
- [Qemu-devel] [PATCH v4 02/11] acpi: add ACPIREGS, (continued)
- [Qemu-devel] [PATCH v4 02/11] acpi: add ACPIREGS, Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 07/11] suspend: add system_wakeup monitor command, Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 04/11] acpi: add acpi_pm1_evt_write_en, Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 01/11] acpi: move around structs, Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 09/11] suspend: make serial ports wakeup the guest., Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 10/11] suspend: make rtc alarm wakeup the guest., Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 05/11] suspend: add infrastructure, Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 08/11] suspend: make ps/2 devices wakeup the guest, Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 11/11] suspend: pmtimer s3 wakeup, Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH v4 06/11] suspend: switch acpi s3 to new infrastructure., Gerd Hoffmann, 2012/02/09
- [Qemu-devel] [PATCH 12/11] suspend: add qmp events,
Gerd Hoffmann <=