[Top][All Lists]
[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
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Paolo Bonzini, 2011/12/02
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Anthony Liguori, 2011/12/02
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Paolo Bonzini, 2011/12/03
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Anthony Liguori, 2011/12/03
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Anthony Liguori, 2011/12/04
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Paolo Bonzini, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Anthony Liguori, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2),
Peter Maydell <=
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Anthony Liguori, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Peter Maydell, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Anthony Liguori, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Paolo Bonzini, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Anthony Liguori, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Paolo Bonzini, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Anthony Liguori, 2011/12/05
- Re: [Qemu-devel] [PATCH v2 00/18] qom: dynamic properties and composition tree (v2), Paolo Bonzini, 2011/12/05