Revision 0e058a8a hw/virtio-console.c
b/hw/virtio-console.c | ||
---|---|---|
123 | 123 |
return 0; |
124 | 124 |
} |
125 | 125 |
|
126 |
void *virtio_console_init(PCIBus *bus, CharDriverState *chr)
|
|
126 |
static void virtio_console_init(PCIDevice *pci_dev)
|
|
127 | 127 |
{ |
128 | 128 |
VirtIOConsole *s; |
129 |
PCIDevice *d; |
|
130 |
|
|
131 |
d = pci_register_device(bus, "virtio-console", sizeof(VirtIOConsole), |
|
132 |
-1, NULL, NULL); |
|
133 |
if (!d) |
|
134 |
return NULL; |
|
135 |
|
|
136 |
s = (VirtIOConsole *)virtio_init_pci(d, "virtio-console", |
|
129 |
s = (VirtIOConsole *)virtio_init_pci(pci_dev, "virtio-console", |
|
137 | 130 |
PCI_VENDOR_ID_REDHAT_QUMRANET, |
138 | 131 |
PCI_DEVICE_ID_VIRTIO_CONSOLE, |
139 | 132 |
PCI_VENDOR_ID_REDHAT_QUMRANET, |
140 | 133 |
VIRTIO_ID_CONSOLE, |
141 | 134 |
PCI_CLASS_DISPLAY_OTHER, 0x00, |
142 | 135 |
0); |
143 |
if (s == NULL) |
|
144 |
return NULL; |
|
145 |
|
|
146 | 136 |
s->vdev.get_features = virtio_console_get_features; |
147 | 137 |
|
148 | 138 |
s->ivq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_input); |
149 | 139 |
s->dvq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_output); |
150 | 140 |
|
151 |
s->chr = chr;
|
|
152 |
qemu_chr_add_handlers(chr, vcon_can_read, vcon_read, vcon_event, s); |
|
141 |
s->chr = qdev_init_chardev(&pci_dev->qdev);
|
|
142 |
qemu_chr_add_handlers(s->chr, vcon_can_read, vcon_read, vcon_event, s);
|
|
153 | 143 |
|
154 | 144 |
register_savevm("virtio-console", -1, 1, virtio_console_save, virtio_console_load, s); |
145 |
} |
|
155 | 146 |
|
156 |
return &s->vdev; |
|
147 |
static void virtio_console_register_devices(void) |
|
148 |
{ |
|
149 |
pci_qdev_register("virtio-console", sizeof(VirtIOConsole), |
|
150 |
virtio_console_init); |
|
157 | 151 |
} |
152 |
|
|
153 |
device_init(virtio_console_register_devices) |
Also available in: Unified diff