qdev-monitor: Factor out find_device_state()
Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
		
							parent
							
								
									1c89e1fa2f
								
							
						
					
					
						commit
						6c1db528b0
					
				| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue