summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Färber <afaerber@suse.de>2013-07-30 04:05:02 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2013-12-09 21:46:49 +0100
commit0ba94b6f94a5b0bed9f125ce4c3348adc83db5de (patch)
tree50b84dfb09b8bed2868319b36d17955be399b0dd
parent71a6520b83414b4ebe3ecfdee3dc3a70db98c91f (diff)
downloadqemu-0ba94b6f94a5b0bed9f125ce4c3348adc83db5de.tar.gz
virtio: Complete converting VirtioDevice to QOM realize
Drop VirtioDeviceClass::init. Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--hw/scsi/virtio-scsi.c3
-rw-r--r--hw/virtio/virtio.c6
-rw-r--r--include/hw/virtio/virtio.h5
3 files changed, 4 insertions, 10 deletions
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index 0a41ddb6c1..a208cf3d89 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -642,8 +642,7 @@ static void virtio_scsi_device_realize(DeviceState *dev, Error **errp)
void virtio_scsi_common_exit(VirtIOSCSICommon *vs)
{
- VirtIODevice *vdev = VIRTIO_DEVICE(dev);
- VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(dev);
+ VirtIODevice *vdev = VIRTIO_DEVICE(vs);
g_free(vs->cmd_vqs);
virtio_cleanup(vdev);
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 4070b37d64..1dba284e4a 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -1156,18 +1156,12 @@ static void virtio_device_realize(DeviceState *dev, Error **errp)
VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(dev);
Error *err = NULL;
- assert(vdc->init != NULL || vdc->realize != NULL);
if (vdc->realize != NULL) {
vdc->realize(dev, &err);
if (err != NULL) {
error_propagate(errp, err);
return;
}
- } else {
- if (vdc->init(vdev) < 0) {
- error_setg(errp, "Device initialization failed.");
- return;
- }
}
virtio_bus_device_plugged(vdev);
}
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 54c5efe4d0..6da88c0f41 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -124,12 +124,13 @@ struct VirtIODevice
};
typedef struct VirtioDeviceClass {
+ /*< private >*/
DeviceClass parent;
+ /*< public >*/
/* This is what a VirtioDevice must implement */
- int (*init)(VirtIODevice *vdev);
- void (*exit)(VirtIODevice *vdev);
DeviceRealize realize;
+ void (*exit)(VirtIODevice *vdev);
uint32_t (*get_features)(VirtIODevice *vdev, uint32_t requested_features);
uint32_t (*bad_features)(VirtIODevice *vdev);
void (*set_features)(VirtIODevice *vdev, uint32_t val);