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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Andreas Färber
						Andreas Färber