diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2009-09-16 22:25:29 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-10-05 09:32:46 -0500 |
commit | b2317837f0dadd845b33d528a940adb658b669b9 (patch) | |
tree | 07b668610459f04f1edb78243f2888e616159977 | |
parent | ca9c39faed928405574d234b4f7c5704cd2c568e (diff) | |
download | qemu-b2317837f0dadd845b33d528a940adb658b669b9.zip qemu-b2317837f0dadd845b33d528a940adb658b669b9.tar.gz qemu-b2317837f0dadd845b33d528a940adb658b669b9.tar.bz2 |
switch usb bus to inplace allocation.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | hw/usb-bus.c | 7 | ||||
-rw-r--r-- | hw/usb-musb.c | 6 | ||||
-rw-r--r-- | hw/usb-ohci.c | 6 | ||||
-rw-r--r-- | hw/usb-uhci.c | 6 | ||||
-rw-r--r-- | hw/usb.h | 2 |
5 files changed, 12 insertions, 15 deletions
diff --git a/hw/usb-bus.c b/hw/usb-bus.c index 03933f1..2cac1e8 100644 --- a/hw/usb-bus.c +++ b/hw/usb-bus.c @@ -14,16 +14,13 @@ static struct BusInfo usb_bus_info = { static int next_usb_bus = 0; static QTAILQ_HEAD(, USBBus) busses = QTAILQ_HEAD_INITIALIZER(busses); -USBBus *usb_bus_new(DeviceState *host) +void usb_bus_new(USBBus *bus, DeviceState *host) { - USBBus *bus; - - bus = FROM_QBUS(USBBus, qbus_create(&usb_bus_info, host, NULL)); + qbus_create_inplace(&bus->qbus, &usb_bus_info, host, NULL); bus->busnr = next_usb_bus++; QTAILQ_INIT(&bus->free); QTAILQ_INIT(&bus->used); QTAILQ_INSERT_TAIL(&busses, bus, next); - return bus; } USBBus *usb_bus_find(int busnr) diff --git a/hw/usb-musb.c b/hw/usb-musb.c index 9eb0d63..09ec5a1 100644 --- a/hw/usb-musb.c +++ b/hw/usb-musb.c @@ -281,7 +281,7 @@ typedef struct { struct MUSBState { qemu_irq *irqs; - USBBus *bus; + USBBus bus; USBPort port; int idx; @@ -331,8 +331,8 @@ struct MUSBState { s->ep[i].epnum = i; } - s->bus = usb_bus_new(NULL /* FIXME */); - usb_register_port(s->bus, &s->port, s, 0, musb_attach); + usb_bus_new(&s->bus, NULL /* FIXME */); + usb_register_port(&s->bus, &s->port, s, 0, musb_attach); return s; } diff --git a/hw/usb-ohci.c b/hw/usb-ohci.c index 6e428c4..48ccd49 100644 --- a/hw/usb-ohci.c +++ b/hw/usb-ohci.c @@ -65,7 +65,7 @@ enum ohci_type { }; typedef struct { - USBBus *bus; + USBBus bus; qemu_irq irq; enum ohci_type type; int mem; @@ -1690,10 +1690,10 @@ static void usb_ohci_init(OHCIState *ohci, DeviceState *dev, ohci->irq = irq; ohci->type = type; - ohci->bus = usb_bus_new(dev); + usb_bus_new(&ohci->bus, dev); ohci->num_ports = num_ports; for (i = 0; i < num_ports; i++) { - usb_register_port(ohci->bus, &ohci->rhport[i].port, ohci, i, ohci_attach); + usb_register_port(&ohci->bus, &ohci->rhport[i].port, ohci, i, ohci_attach); } ohci->async_td = 0; diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c index 6807413..a3ed9b2 100644 --- a/hw/usb-uhci.c +++ b/hw/usb-uhci.c @@ -122,7 +122,7 @@ typedef struct UHCIPort { typedef struct UHCIState { PCIDevice dev; - USBBus *bus; + USBBus bus; uint16_t cmd; /* cmd register */ uint16_t status; uint16_t intr; /* interrupt enable register */ @@ -1083,9 +1083,9 @@ static int usb_uhci_common_initfn(UHCIState *s) pci_conf[0x3d] = 4; // interrupt pin 3 pci_conf[0x60] = 0x10; // release number - s->bus = usb_bus_new(&s->dev.qdev); + usb_bus_new(&s->bus, &s->dev.qdev); for(i = 0; i < NB_PORTS; i++) { - usb_register_port(s->bus, &s->ports[i].port, s, i, uhci_attach); + usb_register_port(&s->bus, &s->ports[i].port, s, i, uhci_attach); } s->frame_timer = qemu_new_timer(vm_clock, uhci_frame_timer, s); @@ -303,7 +303,7 @@ struct USBBus { QTAILQ_ENTRY(USBBus) next; }; -USBBus *usb_bus_new(DeviceState *host); +void usb_bus_new(USBBus *bus, DeviceState *host); USBBus *usb_bus_find(int busnr); void usb_qdev_register(USBDeviceInfo *info); void usb_qdev_register_many(USBDeviceInfo *info); |