"Zhou Yuan" <zhouyuan.f...@cn.fujitsu.com> writes: > From: zhouy <zhouyuan.f...@cn.fujitsu.com> > Date: Fri, 15 Nov 2013 15:50:52 -0500 > Subject: [PATCH] add the id property of i2c_slaver when created in the > QEMUMachine's initialization > > Signed-off-by: zhouy <zhouyuan.f...@cn.fujitsu.com> > --- > qemu-master/hw/i2c/core.c | 8 +++++++- > 1 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/qemu-master/hw/i2c/core.c b/qemu-master/hw/i2c/core.c > index c97e7f7..ea3e59d 100644 > --- a/qemu-master/hw/i2c/core.c > +++ b/qemu-master/hw/i2c/core.c > @@ -213,10 +213,16 @@ static int i2c_slave_qdev_init(DeviceState *dev) > DeviceState *i2c_create_slave(i2c_bus *bus, const char *name, uint8_t addr) > { > DeviceState *dev; > - > + static unsigned int seq_num; > + char *id = g_malloc0(20); > + snprintf(id, 20, "%s-%d", name, seq_num); > dev = qdev_create(&bus->qbus, name); > qdev_prop_set_uint8(dev, "address", addr); > + dev->id = id; > + object_property_add_child(container_get(qdev_get_machine(), > "/peripheral"), > + dev->id, OBJECT(dev), NULL); > qdev_init_nofail(dev); > + seq_num++; > return dev; > }
Why is this needed? In general, property "id" / DeviceState member id is strictly for the user, and should never be set automatically. Exceptions exist in convenience options, mostly for historical reasons.