[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v9 19/23] vl: Introduce shutdown_notifiers
From: |
Yuval Shaia |
Subject: |
[Qemu-devel] [PATCH v9 19/23] vl: Introduce shutdown_notifiers |
Date: |
Fri, 21 Dec 2018 16:40:33 +0200 |
Notifier will be used for signaling shutdown event to inform system is
shutdown. This will allow devices and other component to run some
cleanup code needed before VM is shutdown.
Signed-off-by: Yuval Shaia <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
---
include/sysemu/sysemu.h | 1 +
vl.c | 15 ++++++++++++++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index c8efdeb376..e0d15da937 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -62,6 +62,7 @@ void qemu_register_wakeup_support(void);
void qemu_system_shutdown_request(ShutdownCause reason);
void qemu_system_powerdown_request(void);
void qemu_register_powerdown_notifier(Notifier *notifier);
+void qemu_register_shutdown_notifier(Notifier *notifier);
void qemu_system_debug_request(void);
void qemu_system_vmstop_request(RunState reason);
void qemu_system_vmstop_request_prepare(void);
diff --git a/vl.c b/vl.c
index f5c8ef973c..cc4d65b6b6 100644
--- a/vl.c
+++ b/vl.c
@@ -1577,6 +1577,8 @@ static NotifierList suspend_notifiers =
NOTIFIER_LIST_INITIALIZER(suspend_notifiers);
static NotifierList wakeup_notifiers =
NOTIFIER_LIST_INITIALIZER(wakeup_notifiers);
+static NotifierList shutdown_notifiers =
+ NOTIFIER_LIST_INITIALIZER(shutdown_notifiers);
static uint32_t wakeup_reason_mask = ~(1 << QEMU_WAKEUP_REASON_NONE);
ShutdownCause qemu_shutdown_requested_get(void)
@@ -1828,6 +1830,12 @@ static void qemu_system_powerdown(void)
notifier_list_notify(&powerdown_notifiers, NULL);
}
+static void qemu_system_shutdown(ShutdownCause cause)
+{
+ qapi_event_send_shutdown(shutdown_caused_by_guest(cause), cause);
+ notifier_list_notify(&shutdown_notifiers, &cause);
+}
+
void qemu_system_powerdown_request(void)
{
trace_qemu_system_powerdown_request();
@@ -1840,6 +1848,11 @@ void qemu_register_powerdown_notifier(Notifier *notifier)
notifier_list_add(&powerdown_notifiers, notifier);
}
+void qemu_register_shutdown_notifier(Notifier *notifier)
+{
+ notifier_list_add(&shutdown_notifiers, notifier);
+}
+
void qemu_system_debug_request(void)
{
debug_requested = 1;
@@ -1867,7 +1880,7 @@ static bool main_loop_should_exit(void)
request = qemu_shutdown_requested();
if (request) {
qemu_kill_report();
- qapi_event_send_shutdown(shutdown_caused_by_guest(request), request);
+ qemu_system_shutdown(request);
if (no_shutdown) {
vm_stop(RUN_STATE_SHUTDOWN);
} else {
--
2.17.2
- [Qemu-devel] [PATCH v9 08/23] hw/pvrdma: Set the correct opcode for recv completion, (continued)
- [Qemu-devel] [PATCH v9 08/23] hw/pvrdma: Set the correct opcode for recv completion, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 07/23] hw/pvrdma: Make default pkey 0xFFFF, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 09/23] hw/pvrdma: Set the correct opcode for send completion, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 05/23] hw/rdma: Add support for MAD packets, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 10/23] qapi: Define new QMP message for pvrdma, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 12/23] vmxnet3: Move some definitions to header file, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 13/23] hw/pvrdma: Make sure PCI function 0 is vmxnet3, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 11/23] hw/pvrdma: Add support to allow guest to configure GID table, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 14/23] hw/rdma: Initialize node_guid from vmxnet3 mac address, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 15/23] hw/pvrdma: Make device state depend on Ethernet function state, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 19/23] vl: Introduce shutdown_notifiers,
Yuval Shaia <=
- [Qemu-devel] [PATCH v9 16/23] hw/pvrdma: Fill all CQE fields, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 18/23] hw/rdma: Remove unneeded code that handles more that one port, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 17/23] hw/pvrdma: Fill error code in command's response, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 22/23] hw/rdma: Do not call rdma_backend_del_gid on an empty gid, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 20/23] hw/pvrdma: Clean device's resource when system is shutdown, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 23/23] docs: Update pvrdma device documentation, Yuval Shaia, 2018/12/21
- [Qemu-devel] [PATCH v9 21/23] hw/rdma: Do not use bitmap_zero_extend to free bitmap, Yuval Shaia, 2018/12/21