From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33238) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bG5kW-0001Z8-N1 for qemu-devel@nongnu.org; Thu, 23 Jun 2016 10:36:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bG5kU-0002Gy-Q8 for qemu-devel@nongnu.org; Thu, 23 Jun 2016 10:36:55 -0400 From: Kevin Wolf Date: Thu, 23 Jun 2016 16:36:28 +0200 Message-Id: <1466692592-9551-4-git-send-email-kwolf@redhat.com> In-Reply-To: <1466692592-9551-1-git-send-email-kwolf@redhat.com> References: <1466692592-9551-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [RFC PATCH 3/7] qdev-monitor: Factor out find_device_state() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-block@nongnu.org Cc: kwolf@redhat.com, eblake@redhat.com, armbru@redhat.com, stefanha@redhat.com, mreitz@redhat.com, famz@redhat.com, qemu-devel@nongnu.org Signed-off-by: Kevin Wolf --- qdev-monitor.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/qdev-monitor.c b/qdev-monitor.c index e19617f..bc0213f 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -801,7 +801,7 @@ void qmp_device_add(QDict *qdict, QObject **ret_data, Error **errp) object_unref(OBJECT(dev)); } -void qmp_device_del(const char *id, Error **errp) +static DeviceState *find_device_state(const char *id, Error **errp) { Object *obj; @@ -819,15 +819,23 @@ void qmp_device_del(const char *id, Error **errp) if (!obj) { error_set(errp, ERROR_CLASS_DEVICE_NOT_FOUND, "Device '%s' not found", id); - return; + return NULL; } if (!object_dynamic_cast(obj, TYPE_DEVICE)) { error_setg(errp, "%s is not a hotpluggable device", id); - return; + return NULL; } - qdev_unplug(DEVICE(obj), errp); + return DEVICE(obj); +} + +void qmp_device_del(const char *id, Error **errp) +{ + DeviceState *dev = find_device_state(id, errp); + if (dev != NULL) { + qdev_unplug(dev, errp); + } } void qdev_machine_init(void) -- 1.8.3.1