qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 0/3] Fix confused output for alias properties


From: Gonglei (Arei)
Subject: Re: [Qemu-devel] [PATCH 0/3] Fix confused output for alias properties
Date: Mon, 22 Sep 2014 13:19:32 +0000

> > From: Paolo Bonzini [mailto:address@hidden On Behalf Of Paolo
> > Bonzini
> > Sent: Monday, September 22, 2014 8:07 PM
> > To: Gonglei (Arei); Michael S. Tsirkin
> > Cc: address@hidden; Huangweidong (C); address@hidden; Huangpeng
> > (Peter); address@hidden; address@hidden;
> > address@hidden
> > Subject: Re: [PATCH 0/3] Fix confused output for alias properties
> >
> > Il 22/09/2014 13:22, Gonglei (Arei) ha scritto:
> > > > This doesn't change the fact that ObjectProperty is a generic struct,
> > > > and adding alias-specific fields there is wrong.
> > >
> > > OK, Maybe I should find other ways to attach this purpose and
> > > avoid layering violation. Thanks!
> >
> > Unfortunately I cannot think of any.
> >
> 
> What about this below way? Thanks!
> 
> (I don't add alias-sepecific filed into ObjectProperty
> struct, just add a bool property. )
> 

Then we can cast "void *opaque" of ObjectPropery
to AliasProperty struct. :)

> diff --git a/include/qom/object.h b/include/qom/object.h
> index 8a05a81..8b8ded5 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -334,6 +334,11 @@ typedef void (ObjectPropertyRelease)(Object *obj,
>                                       const char *name,
>                                       void *opaque);
> 
> +typedef struct {
> +    Object *target_obj;
> +    const char *target_name;
> +} AliasProperty;
> +
>  typedef struct ObjectProperty
>  {
>      gchar *name;
> @@ -344,6 +349,8 @@ typedef struct ObjectProperty
>      ObjectPropertyRelease *release;
>      void *opaque;
> 
> +    bool is_alias;
> +
>      QTAILQ_ENTRY(ObjectProperty) node;
>  } ObjectProperty;
> 
> diff --git a/qom/object.c b/qom/object.c
> index a8c3065..0b4e402 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -1590,11 +1590,6 @@ void object_property_add_uint64_ptr(Object *obj,
> const char *name,
>                          NULL, NULL, (void *)v, errp);
>  }
> 
> -typedef struct {
> -    Object *target_obj;
> -    const char *target_name;
> -} AliasProperty;
> -
>  static void property_get_alias(Object *obj, struct Visitor *v, void *opaque,
>                                 const char *name, Error **errp)
>  {
> @@ -1663,6 +1658,7 @@ void object_property_add_alias(Object *obj, const
> char *name,
>          goto out;
>      }
>      op->resolve = property_resolve_alias;
> +    op->is_alias = true;
> 
>  out:
>      g_free(prop_type);
> --
> 1.7.12.4
> 
> 
> > We could add a description field to ObjectProperty, and replace
> > legacy_name with a description.  The output then would be
> >
> > virtio-blk.drive=str (drive)
> >
> > That's a bit hackish, but perhaps it would be good enough for mst and
> > Markus?
> >
> > Paolo
> 
> Best regards,
> -Gonglei



reply via email to

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