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);
|
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);
|
VirtIORNG *vrng = VIRTIO_RNG(dev);
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
|
|
||||||
if (!vrng->conf.period_ms > 0) {
|
if (!vrng->conf.period_ms > 0) {
|
||||||
qerror_report(QERR_INVALID_PARAMETER_VALUE, "period",
|
error_set(errp, QERR_INVALID_PARAMETER_VALUE, "period",
|
||||||
"a positive number");
|
"a positive number");
|
||||||
return -1;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vrng->conf.rng == NULL) {
|
if (vrng->conf.rng == NULL) {
|
||||||
@ -162,15 +162,14 @@ static int virtio_rng_device_init(VirtIODevice *vdev)
|
|||||||
|
|
||||||
vrng->rng = vrng->conf.rng;
|
vrng->rng = vrng->conf.rng;
|
||||||
if (vrng->rng == NULL) {
|
if (vrng->rng == NULL) {
|
||||||
qerror_report(QERR_INVALID_PARAMETER_VALUE, "rng", "a valid object");
|
error_set(errp, QERR_INVALID_PARAMETER_VALUE, "rng", "a valid object");
|
||||||
return -1;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rng_backend_open(vrng->rng, &local_err);
|
rng_backend_open(vrng->rng, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
qerror_report_err(local_err);
|
error_propagate(errp, local_err);
|
||||||
error_free(local_err);
|
return;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vrng->vq = virtio_add_queue(vdev, 8, handle_input);
|
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,
|
register_savevm(dev, "virtio-rng", -1, 1, virtio_rng_save,
|
||||||
virtio_rng_load, vrng);
|
virtio_rng_load, vrng);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void virtio_rng_device_exit(VirtIODevice *vdev)
|
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);
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||||
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
|
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
|
||||||
|
|
||||||
dc->props = virtio_rng_properties;
|
dc->props = virtio_rng_properties;
|
||||||
set_bit(DEVICE_CATEGORY_MISC, dc->categories);
|
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->exit = virtio_rng_device_exit;
|
||||||
vdc->get_features = get_features;
|
vdc->get_features = get_features;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
#define TYPE_VIRTIO_RNG "virtio-rng-device"
|
#define TYPE_VIRTIO_RNG "virtio-rng-device"
|
||||||
#define VIRTIO_RNG(obj) \
|
#define VIRTIO_RNG(obj) \
|
||||||
OBJECT_CHECK(VirtIORNG, (obj), TYPE_VIRTIO_RNG)
|
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 */
|
/* The Virtio ID for the virtio rng device */
|
||||||
#define VIRTIO_ID_RNG 4
|
#define VIRTIO_ID_RNG 4
|
||||||
|
Loading…
Reference in New Issue
Block a user