Commit 17c8660b authored by Luiz Capitulino's avatar Luiz Capitulino
Browse files

qmp: emit the WAKEUP event when the guest is put to run



Today, the WAKEUP event is emitted when a wakeup _request_ is made.
This could be the system_wakeup command, for example.

A better semantic would be to emit the event when the guest is
already running, as that's what matters in the end. This commit does
that change.

In theory, this could break compatibility. In practice, it shouldn't
happen though, as clients shouldn't rely on timing characteristics of
the events. That is, a client relying that the guest is not running
when the event arrives may break if the event arrives after the guest
is already running.

This commit also adds the missing documentation for the WAKEUP event.

Signed-off-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
Acked-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent 14058196
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -264,6 +264,19 @@ Example:
}}


WAKEUP
------

Emitted when the guest has woken up from S3 and is running.

Data: None.

Example:

{ "event": "WATCHDOG",
     "timestamp": { "seconds": 1344522075, "microseconds": 745528 } }


WATCHDOG
--------

+1 −1
Original line number Diff line number Diff line
@@ -1465,7 +1465,6 @@ void qemu_system_wakeup_request(WakeupReason reason)
        return;
    }
    runstate_set(RUN_STATE_RUNNING);
    monitor_protocol_event(QEVENT_WAKEUP, NULL);
    notifier_list_notify(&wakeup_notifiers, &reason);
    wakeup_requested = 1;
    qemu_notify_event();
@@ -1552,6 +1551,7 @@ static bool main_loop_should_exit(void)
        cpu_synchronize_all_states();
        qemu_system_reset(VMRESET_SILENT);
        resume_all_vcpus();
        monitor_protocol_event(QEVENT_WAKEUP, NULL);
    }
    if (qemu_powerdown_requested()) {
        monitor_protocol_event(QEVENT_POWERDOWN, NULL);