qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] 答复: Re: [PATCH v4 1/5] qom: Add interface check in object_


From: Lin Ma
Subject: [Qemu-devel] 答复: Re: [PATCH v4 1/5] qom: Add interface check in object_class_is_abstract
Date: Mon, 07 Nov 2016 02:19:18 -0700


>>> Markus Armbruster <address@hidden> 2016/11/4 星期五 上午 2:18 >>>
>Lin Ma <address@hidden> writes:
>
>> Signed-off-by: Lin Ma <address@hidden>
>> ---
>>  qom/object.c | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/qom/object.c b/qom/object.c
>> index 7a05e35..4096645 100644
>> --- a/qom/object.c
>> +++ b/qom/object.c
>> @@ -747,7 +747,11 @@ ObjectClass *object_get_class(Object *obj)
>>  
>>  bool object_class_is_abstract(ObjectClass *klass)
>>  {
>> -    return klass->type->abstract;
>> +    if (type_is_ancestor(klass->type, type_interface)) {
>> +        return true;
>> +    } else {
>> +        return klass->type->abstract;
>> +    }
>>  }
>>  
>>  const char *object_class_get_name(ObjectClass *klass)
>
>Pardon my ignorance...
>
>If all types derived from type_interface are abstract, why aren't we
>setting ->abstract right when such a type is defined?
For lots of interfaces, they already explicitly define abstract as true, say:
generic-pc-machine in hw/i386/pc.c, or memory-backend in backends/hostmem.c
 
Please refer to 
http://lists.nongnu.org/archive/html/qemu-devel/2016-10/msg01955.html
hope it could give you some clue.
but I see that other interfaces (I randomly picked generic-pc-machine and 
fw_cfg as examples)
still explicitly define 'abstract = true'.

>Hmm, perhaps we do?  type_initialize_interface() sets info.abstract =
>true...
For interfaces, I guess not.

>In case we don't: what about other uses of ->abstract?  Why is it okay
>not to check whether type_interface is an ancestore there?
For lots of interfaces, they already explicitly define abstract as true, say:
generic-pc-machine in hw/i386/pc.c, or memory-backend in backends/hostmem.c
So they can be checked through  ->abstract, dont need to  check whether 
type_interface is
an ancestore.
 
Thanks,
Lin


reply via email to

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