"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.

Reply via email to