[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 13/30] misc/ivshmem: QOM Upcast Sweep
From: |
Andreas Färber |
Subject: |
Re: [Qemu-devel] [PATCH v2 13/30] misc/ivshmem: QOM Upcast Sweep |
Date: |
Sun, 30 Jun 2013 11:18:00 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130510 Thunderbird/17.0.6 |
Am 24.06.2013 08:59, schrieb address@hidden:
> From: Peter Crosthwaite <address@hidden>
>
> Define and use standard QOM cast macro. Remove usages of DO_UPCAST
> and direct -> style upcasting.
>
> Signed-off-by: Peter Crosthwaite <address@hidden>
> ---
>
> hw/misc/ivshmem.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
> index 5658f73..fd40caf 100644
> --- a/hw/misc/ivshmem.c
> +++ b/hw/misc/ivshmem.c
> @@ -48,6 +48,10 @@
> #define IVSHMEM_DPRINTF(fmt, ...)
> #endif
>
> +#define TYPE_IVSHMEM "ivshmem"
> +#define IVSHMEM(obj) \
> + OBJECT_CHECK(IVShmemState, (obj), TYPE_IVSHMEM)
> +
> typedef struct Peer {
> int nb_eventfds;
> EventNotifier *eventfds;
> @@ -341,7 +345,7 @@ static void create_shared_memory_BAR(IVShmemState *s, int
> fd) {
>
> memory_region_init_ram_ptr(&s->ivshmem, "ivshmem.bar2",
> s->ivshmem_size, ptr);
> - vmstate_register_ram(&s->ivshmem, &s->dev.qdev);
> + vmstate_register_ram(&s->ivshmem, DEVICE(&s->dev));
DEVICE(s)
> memory_region_add_subregion(&s->bar, 0, &s->ivshmem);
>
> /* region for shared memory */
> @@ -469,7 +473,7 @@ static void ivshmem_read(void *opaque, const uint8_t *
> buf, int flags)
> incoming_fd, 0);
> memory_region_init_ram_ptr(&s->ivshmem,
> "ivshmem.bar2", s->ivshmem_size, map_ptr);
> - vmstate_register_ram(&s->ivshmem, &s->dev.qdev);
> + vmstate_register_ram(&s->ivshmem, DEVICE(&s->dev));
DEVICE(s)
Renaming the parent field showed that there are still some s->dev
accesses missed in this patch. Applying anyway to qom-next:
https://github.com/afaerber/qemu-cpu/commits/qom-next
IMO such casting cleanup patches make the most sense when they are
complete in removing all accesses to the parent field and proving that
by renaming the parent field with the only remaining usage being in
VMSTATE_PCI(). We won't be able to drop DO_UPCAST() since it's being
used outside QOM in the block layer for instance. I'm hoping we can
squash a fixup so that we don't need to touch each device twice.
Regards,
Andreas
>
> IVSHMEM_DPRINTF("guest h/w addr = %" PRIu64 ", size = %" PRIu64 "\n",
> s->ivshmem_offset, s->ivshmem_size);
> @@ -534,7 +538,7 @@ static void ivshmem_use_msix(IVShmemState * s)
>
> static void ivshmem_reset(DeviceState *d)
> {
> - IVShmemState *s = DO_UPCAST(IVShmemState, dev.qdev, d);
> + IVShmemState *s = IVSHMEM(d);
>
> s->intrstatus = 0;
> ivshmem_use_msix(s);
> @@ -648,7 +652,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
> s->ivshmem_size = ivshmem_get_size(s);
> }
>
> - register_savevm(&s->dev.qdev, "ivshmem", 0, 0, ivshmem_save,
> ivshmem_load,
> + register_savevm(DEVICE(dev), "ivshmem", 0, 0, ivshmem_save, ivshmem_load,
> dev);
>
> /* IRQFD requires MSI */
> @@ -780,10 +784,10 @@ static void pci_ivshmem_uninit(PCIDevice *dev)
>
> memory_region_destroy(&s->ivshmem_mmio);
> memory_region_del_subregion(&s->bar, &s->ivshmem);
> - vmstate_unregister_ram(&s->ivshmem, &s->dev.qdev);
> + vmstate_unregister_ram(&s->ivshmem, DEVICE(dev));
> memory_region_destroy(&s->ivshmem);
> memory_region_destroy(&s->bar);
> - unregister_savevm(&dev->qdev, "ivshmem", s);
> + unregister_savevm(DEVICE(dev), "ivshmem", s);
> }
>
> static Property ivshmem_properties[] = {
> @@ -813,7 +817,7 @@ static void ivshmem_class_init(ObjectClass *klass, void
> *data)
> }
>
> static const TypeInfo ivshmem_info = {
> - .name = "ivshmem",
> + .name = TYPE_IVSHMEM,
> .parent = TYPE_PCI_DEVICE,
> .instance_size = sizeof(IVShmemState),
> .class_init = ivshmem_class_init,
>
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
- Re: [Qemu-devel] [PATCH v2 09/30] ide/piix: QOM casting sweep, (continued)
- [Qemu-devel] [PATCH v2 10/30] acpi/piix4: QOM Upcast Sweep, peter . crosthwaite, 2013/06/24
- [Qemu-devel] [PATCH v2 11/30] misc/pci-testdev: QOM Upcast Sweep, peter . crosthwaite, 2013/06/24
- [Qemu-devel] [PATCH v2 12/30] virtio/vmware_vga: QOM casting sweep, peter . crosthwaite, 2013/06/24
- [Qemu-devel] [PATCH v2 13/30] misc/ivshmem: QOM Upcast Sweep, peter . crosthwaite, 2013/06/24
- [Qemu-devel] [PATCH v2 14/30] xen/xen_platform: QOM casting sweep, peter . crosthwaite, 2013/06/24
- [Qemu-devel] [PATCH v2 15/30] isa/*: QOM casting sweep, peter . crosthwaite, 2013/06/24
- [Qemu-devel] [PATCH v2 16/30] pci/*: QOM casting sweep, peter . crosthwaite, 2013/06/24
- [Qemu-devel] [PATCH v2 17/30] pci-bridge/pci_bridge_dev: Don't use DO_UPCAST, peter . crosthwaite, 2013/06/24
- [Qemu-devel] [PATCH v2 18/30] pci-bridge/*: substitute ->qdev casts with DEVICE(), peter . crosthwaite, 2013/06/24