qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and compositio


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2)
Date: Mon, 5 Dec 2011 14:50:04 +0000

On 5 December 2011 14:36, Anthony Liguori <address@hidden> wrote:
> On 12/05/2011 03:52 AM, Paolo Bonzini wrote:
> struct SCSIBus {
>   Interface parent;
>   void (*command_complete)(SCSIBus *bus, SCSIRequest *req);
> };
>
> TypeInfo scsi_bus_info = {
>   .name = TYPE_SCSI_BUS,
>   .parent = TYPE_INTERFACE,
> };
>
> type_register_static(&scsi_bus_info);
>
> --------
>
> struct LSIDevice {
>    PCIDevice parent;
> };
>
> static void lsi_command_complete(SCSIBus *bus, SCSIRequest *req)
> {
>   LSIDevice *dev = LSI_DEVICE(bus);
>   ...
> }

What is the LSI_DEVICE macro actually doing here? I assume
it's not just a cast...

> static void lsi_scsi_bus_initfn(Interface *iface)
> {
>   SCSIBus *bus = SCSI_BUS(iface);
>
>   bus->command_complete = lsi_command_complete;
> }
>
> TypeInfo lsi_device_info = {
>  .name = TYPE_LSI,
>  .parent = TYPE_PCI_DEVICE,
>  .interfaces = (Interface[]){
>     {
>        .name = TYPE_SCSI_BUS,
>        .interface_initfn = lsi_scsi_bus_initfn,
>     }, {
>     }
>  },
> };
>
> type_register_static(&lsi_device_info);
>
>
>>
>> Perhaps hidden with some macro that lets me just write
>> SCSI_BUS_INTERFACE(dev), but that's the idea; such a lookup function is
>> pretty much what all object models do. GObject has
>> G_TYPE_INSTANCE_GET_INTERFACE, COM/XPCOM has QueryInterface, etc.
>>
>> If I understood everything so far, then here is my question. Are
>> interfaces properties?
>
>
> No.  A device is-a interface.  Hopefully the above example will make it more
> clear.

Saying a device is-a interface doesn't match reality. Devices
have multiple interfaces with the rest of the world. (This is
one of the major reasons why SysBus exists: it provides a suboptimal
but usuable model of this for the two most common kinds of interface,
MMIO regions and random gpio.)

-- PMM



reply via email to

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