From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51564) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vq7mC-0006wT-7o for qemu-devel@nongnu.org; Mon, 09 Dec 2013 15:50:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vq7m6-0003wo-LX for qemu-devel@nongnu.org; Mon, 09 Dec 2013 15:50:00 -0500 Received: from mail-ee0-x22b.google.com ([2a00:1450:4013:c00::22b]:59538) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vq7m6-0003vo-E2 for qemu-devel@nongnu.org; Mon, 09 Dec 2013 15:49:54 -0500 Received: by mail-ee0-f43.google.com with SMTP id c13so1799486eek.16 for ; Mon, 09 Dec 2013 12:49:53 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Mon, 9 Dec 2013 21:48:29 +0100 Message-Id: <1386622112-27257-28-git-send-email-pbonzini@redhat.com> In-Reply-To: <1386622112-27257-1-git-send-email-pbonzini@redhat.com> References: <1386622112-27257-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PULL 27/30] virtio-rng: Convert to QOM realize List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: cornelia.huck@de.ibm.com, afaerber@suse.de, mst@redhat.com From: Andreas Färber Signed-off-by: Andreas Färber Signed-off-by: Paolo Bonzini --- hw/virtio/virtio-rng.c | 24 +++++++++++------------- include/hw/virtio/virtio-rng.h | 2 ++ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c index 9e2a66a..fd61cb2 100644 --- a/hw/virtio/virtio-rng.c +++ b/hw/virtio/virtio-rng.c @@ -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; } diff --git a/include/hw/virtio/virtio-rng.h b/include/hw/virtio/virtio-rng.h index debaa15..14e85a5 100644 --- a/include/hw/virtio/virtio-rng.h +++ b/include/hw/virtio/virtio-rng.h @@ -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 -- 1.8.4.2