qemu-trivial
[Top][All Lists]
Advanced

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

Re: [Qemu-trivial] [Qemu-devel] [PATCH] qdev property: cleanup


From: Cao jin
Subject: Re: [Qemu-trivial] [Qemu-devel] [PATCH] qdev property: cleanup
Date: Sat, 9 Apr 2016 22:25:25 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0



On 04/08/2016 07:17 PM, Markus Armbruster wrote:

- * Static properties access data in a struct.  The actual type of the
- * property and the field depends on the property type.
+ * Static properties access data in a struct. The actual type of ObjectProperty
+ * and the struct field depends on the @qtype type.
   */

Not sure this part is an improvement.  What's wrong with the current text?


In a word: little hard for newbies like me to understand. (I think comments are for newbies). see my feeling about the comment:

As per my understanding, property has 2 kinds, former qdev property and the latest QOM property. For me, the original description is too ambiguous about 'property'.

original: *The actual type of the property and the field depends on the property type*

Using two same word 'property' is ambiguous and hard for newbie to distinguish. The 1st 'property' should mean a QOM property. and the 2nd 'property', I think the original author`s meaning is: qdev property. But, what is the qdev property *type*? cannot find 'type' field in the definition except a *qtype*

struct Property {
    const char   *name;
    PropertyInfo *info;
    ptrdiff_t    offset;
    uint8_t      bitnr;
    QType        qtype;
    int64_t      defval;
    int          arrayoffset;
    PropertyInfo *arrayinfo;
    int          arrayfieldsize;
};

And *the actual type of the field* depends on the qtype, take bitmap field for example, bitmap field in a structure is always a *int*, but when convert to QOM property, it is treated as a *bool*, see DEFINE_PROP_BIT, DEFINE_PROP_BIT64, its qtype are QTYPE_QBOOL.

But I am little confused also now, I think my modification isn`t perfect
1. see how qdev_property_add_static invoke object_property_add, it pass prop->info->name as its QOM property type

2. when structure field is enum, QOM property will treat it as string(not depends on qtype now), see code:

else if (prop->info->enum_table) {
    object_property_set_str(obj, prop->info->enum_table[prop->defval],
                            prop->name, &error_abort);

I will do more analyse before v2.

--
Yours Sincerely,

Cao jin





reply via email to

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