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