diff options
author | Wenchao Xia <wenchaoqemu@gmail.com> | 2014-06-18 08:43:43 +0200 |
---|---|---|
committer | Luiz Capitulino <lcapitulino@redhat.com> | 2014-06-23 11:12:27 -0400 |
commit | 24b699fb2b3229c6da0d93e80b69a16cc84cd3dd (patch) | |
tree | 3d7058d3565b73de3c83709f44dc1d57925cfbb8 | |
parent | 99eaf09c73b213e32e297b1d08d035abb5b268e9 (diff) |
qapi event: convert DEVICE_DELETED
Signed-off-by: Wenchao Xia <wenchaoqemu@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
-rw-r--r-- | docs/qmp/qmp-events.txt | 18 | ||||
-rw-r--r-- | hw/core/qdev.c | 12 | ||||
-rw-r--r-- | qapi-event.json | 16 |
3 files changed, 18 insertions, 28 deletions
diff --git a/docs/qmp/qmp-events.txt b/docs/qmp/qmp-events.txt index 8efc8df413..1792c0c518 100644 --- a/docs/qmp/qmp-events.txt +++ b/docs/qmp/qmp-events.txt @@ -168,24 +168,6 @@ Example: Note: The "ready to complete" status is always reset by a BLOCK_JOB_ERROR event. -DEVICE_DELETED --------------- - -Emitted whenever the device removal completion is acknowledged -by the guest. -At this point, it's safe to reuse the specified device ID. -Device removal can be initiated by the guest or by HMP/QMP commands. - -Data: - -- "device": device name (json-string, optional) -- "path": device path (json-string) - -{ "event": "DEVICE_DELETED", - "data": { "device": "virtio-net-pci-0", - "path": "/machine/peripheral/virtio-net-pci-0" }, - "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } - DEVICE_TRAY_MOVED ----------------- diff --git a/hw/core/qdev.c b/hw/core/qdev.c index b9cd4fc814..d1eba3cc3d 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -32,9 +32,9 @@ #include "qapi/qmp/qerror.h" #include "qapi/visitor.h" #include "qapi/qmp/qjson.h" -#include "monitor/monitor.h" #include "hw/hotplug.h" #include "hw/boards.h" +#include "qapi-event.h" int qdev_hotplug = 0; static bool qdev_hot_added = false; @@ -972,7 +972,6 @@ static void device_unparent(Object *obj) { DeviceState *dev = DEVICE(obj); BusState *bus; - QObject *event_data; bool have_realized = dev->realized; if (dev->realized) { @@ -992,14 +991,7 @@ static void device_unparent(Object *obj) if (have_realized) { gchar *path = object_get_canonical_path(OBJECT(dev)); - if (dev->id) { - event_data = qobject_from_jsonf("{ 'device': %s, 'path': %s }", - dev->id, path); - } else { - event_data = qobject_from_jsonf("{ 'path': %s }", path); - } - monitor_protocol_event(QEVENT_DEVICE_DELETED, event_data); - qobject_decref(event_data); + qapi_event_send_device_deleted(!!dev->id, dev->id, path, &error_abort); g_free(path); } } diff --git a/qapi-event.json b/qapi-event.json index e7dbfab56f..c880d77291 100644 --- a/qapi-event.json +++ b/qapi-event.json @@ -106,3 +106,19 @@ ## { 'event': 'WATCHDOG', 'data': { 'action': 'WatchdogExpirationAction' } } + +## +# @DEVICE_DELETED +# +# Emitted whenever the device removal completion is acknowledged by the guest. +# At this point, it's safe to reuse the specified device ID. Device removal can +# be initiated by the guest or by HMP/QMP commands. +# +# @device: #optional, device name +# +# @path: device path +# +# Since: 1.5 +## +{ 'event': 'DEVICE_DELETED', + 'data': { '*device': 'str', 'path': 'str' } } |