Skip to content

Commit

Permalink
qapi event: convert DEVICE_DELETED
Browse files Browse the repository at this point in the history
Signed-off-by: Wenchao Xia <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Luiz Capitulino <[email protected]>
  • Loading branch information
Wenchao Xia authored and Luiz Capitulino committed Jun 23, 2014
1 parent 99eaf09 commit 24b699f
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 28 deletions.
18 changes: 0 additions & 18 deletions docs/qmp/qmp-events.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
-----------------

Expand Down
12 changes: 2 additions & 10 deletions hw/core/qdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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) {
Expand All @@ -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);
}
}
Expand Down
16 changes: 16 additions & 0 deletions qapi-event.json
Original file line number Diff line number Diff line change
Expand Up @@ -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' } }

0 comments on commit 24b699f

Please sign in to comment.