virtio-rng: Convert to QOM realize
Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
74def47c8c
commit
a8d57dfb28
@ -133,16 +133,16 @@ static void check_rate_limit(void *opaque)
|
||||
qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + vrng->conf.period_ms);
|
||||
}
|
||||
|
||||
static int virtio_rng_device_init(VirtIODevice *vdev)
|
||||
static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
DeviceState *dev = DEVICE(vdev);
|
||||
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
|
||||
VirtIORNG *vrng = VIRTIO_RNG(dev);
|
||||
Error *local_err = NULL;
|
||||
|
||||
if (!vrng->conf.period_ms > 0) {
|
||||
qerror_report(QERR_INVALID_PARAMETER_VALUE, "period",
|
||||
"a positive number");
|
||||
return -1;
|
||||
error_set(errp, QERR_INVALID_PARAMETER_VALUE, "period",
|
||||
"a positive number");
|
||||
return;
|
||||
}
|
||||
|
||||
if (vrng->conf.rng == NULL) {
|
||||
@ -162,15 +162,14 @@ static int virtio_rng_device_init(VirtIODevice *vdev)
|
||||
|
||||
vrng->rng = vrng->conf.rng;
|
||||
if (vrng->rng == NULL) {
|
||||
qerror_report(QERR_INVALID_PARAMETER_VALUE, "rng", "a valid object");
|
||||
return -1;
|
||||
error_set(errp, QERR_INVALID_PARAMETER_VALUE, "rng", "a valid object");
|
||||
return;
|
||||
}
|
||||
|
||||
rng_backend_open(vrng->rng, &local_err);
|
||||
if (local_err) {
|
||||
qerror_report_err(local_err);
|
||||
error_free(local_err);
|
||||
return -1;
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
|
||||
vrng->vq = virtio_add_queue(vdev, 8, handle_input);
|
||||
@ -186,8 +185,6 @@ static int virtio_rng_device_init(VirtIODevice *vdev)
|
||||
|
||||
register_savevm(dev, "virtio-rng", -1, 1, virtio_rng_save,
|
||||
virtio_rng_load, vrng);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void virtio_rng_device_exit(VirtIODevice *vdev)
|
||||
@ -209,9 +206,10 @@ static void virtio_rng_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
|
||||
|
||||
dc->props = virtio_rng_properties;
|
||||
set_bit(DEVICE_CATEGORY_MISC, dc->categories);
|
||||
vdc->init = virtio_rng_device_init;
|
||||
vdc->realize = virtio_rng_device_realize;
|
||||
vdc->exit = virtio_rng_device_exit;
|
||||
vdc->get_features = get_features;
|
||||
}
|
||||
|
@ -18,6 +18,8 @@
|
||||
#define TYPE_VIRTIO_RNG "virtio-rng-device"
|
||||
#define VIRTIO_RNG(obj) \
|
||||
OBJECT_CHECK(VirtIORNG, (obj), TYPE_VIRTIO_RNG)
|
||||
#define VIRTIO_RNG_GET_PARENT_CLASS(obj) \
|
||||
OBJECT_GET_PARENT_CLASS(obj, TYPE_VIRTIO_RNG)
|
||||
|
||||
/* The Virtio ID for the virtio rng device */
|
||||
#define VIRTIO_ID_RNG 4
|
||||
|
Loading…
Reference in New Issue
Block a user