qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 37/36] qdev: device_del: search for to be unp


From: Zhu Guihua
Subject: Re: [Qemu-devel] [PATCH v2 37/36] qdev: device_del: search for to be unplugged device in 'peripheral' container
Date: Tue, 7 Oct 2014 19:59:51 +0800

On Thu, 2014-10-02 at 10:08 +0000, Igor Mammedov wrote:
> device_add puts every device with 'id' inside of 'peripheral'
> container using id's value as the last component name.
> Use it by replacing recursive search on sysbus with path
> lookup in 'peripheral' container, which could handle both
> BUS and BUS-less device cases.
> 

If I want to delete device without id inside of 'peripheral-anon'
container, the command 'device_del' does not work. 
My suggestion is deleting device by the last component name, is this
feasiable?
Thanks.

Zhu

> Signed-off-by: Igor Mammedov <address@hidden>
> ---
>  qdev-monitor.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/qdev-monitor.c b/qdev-monitor.c
> index c721451..754437b 100644
> --- a/qdev-monitor.c
> +++ b/qdev-monitor.c
> @@ -686,15 +686,20 @@ int do_device_add(Monitor *mon, const QDict *qdict, 
> QObject **ret_data)
>  
>  void qmp_device_del(const char *id, Error **errp)
>  {
> -    DeviceState *dev;
> +    Object *obj;
> +    char *root_path = object_get_canonical_path(qdev_get_peripheral());
> +    char *path = g_strdup_printf("%s/%s", root_path, id);
>  
> -    dev = qdev_find_recursive(sysbus_get_default(), id);
> -    if (!dev) {
> +    g_free(root_path);
> +    obj = object_resolve_path_type(path, TYPE_DEVICE, NULL);
> +    g_free(path);
> +
> +    if (!obj) {
>          error_set(errp, QERR_DEVICE_NOT_FOUND, id);
>          return;
>      }
>  
> -    qdev_unplug(dev, errp);
> +    qdev_unplug(DEVICE(obj), errp);
>  }
>  
>  void qdev_machine_init(void)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]