qdev: add function qdev_set_id()
In order to have an easy way to add a new qdev with a specific id carve out the needed functionality from qdev_device_add() into a new function qdev_set_id(). Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
		
							parent
							
								
									873d57abba
								
							
						
					
					
						commit
						ce49b734b4
					
				| @ -12,5 +12,6 @@ void qmp_device_add(QDict *qdict, QObject **ret_data, Error **errp); | ||||
| 
 | ||||
| int qdev_device_help(QemuOpts *opts); | ||||
| DeviceState *qdev_device_add(QemuOpts *opts, Error **errp); | ||||
| void qdev_set_id(DeviceState *dev, const char *id); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -539,10 +539,28 @@ static BusState *qbus_find(const char *path, Error **errp) | ||||
|     return bus; | ||||
| } | ||||
| 
 | ||||
| void qdev_set_id(DeviceState *dev, const char *id) | ||||
| { | ||||
|     if (id) { | ||||
|         dev->id = id; | ||||
|     } | ||||
| 
 | ||||
|     if (dev->id) { | ||||
|         object_property_add_child(qdev_get_peripheral(), dev->id, | ||||
|                                   OBJECT(dev), NULL); | ||||
|     } else { | ||||
|         static int anon_count; | ||||
|         gchar *name = g_strdup_printf("device[%d]", anon_count++); | ||||
|         object_property_add_child(qdev_get_peripheral_anon(), name, | ||||
|                                   OBJECT(dev), NULL); | ||||
|         g_free(name); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| DeviceState *qdev_device_add(QemuOpts *opts, Error **errp) | ||||
| { | ||||
|     DeviceClass *dc; | ||||
|     const char *driver, *path, *id; | ||||
|     const char *driver, *path; | ||||
|     DeviceState *dev; | ||||
|     BusState *bus = NULL; | ||||
|     Error *err = NULL; | ||||
| @ -591,21 +609,7 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **errp) | ||||
|         qdev_set_parent_bus(dev, bus); | ||||
|     } | ||||
| 
 | ||||
|     id = qemu_opts_id(opts); | ||||
|     if (id) { | ||||
|         dev->id = id; | ||||
|     } | ||||
| 
 | ||||
|     if (dev->id) { | ||||
|         object_property_add_child(qdev_get_peripheral(), dev->id, | ||||
|                                   OBJECT(dev), NULL); | ||||
|     } else { | ||||
|         static int anon_count; | ||||
|         gchar *name = g_strdup_printf("device[%d]", anon_count++); | ||||
|         object_property_add_child(qdev_get_peripheral_anon(), name, | ||||
|                                   OBJECT(dev), NULL); | ||||
|         g_free(name); | ||||
|     } | ||||
|     qdev_set_id(dev, qemu_opts_id(opts)); | ||||
| 
 | ||||
|     /* set properties */ | ||||
|     if (qemu_opt_foreach(opts, set_property, dev, &err)) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Juergen Gross
						Juergen Gross