From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MjUso-0004Am-9k for qemu-devel@nongnu.org; Fri, 04 Sep 2009 05:15:02 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MjUsj-00044N-Ch for qemu-devel@nongnu.org; Fri, 04 Sep 2009 05:15:01 -0400 Received: from [199.232.76.173] (port=41593 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MjUsj-000440-1Q for qemu-devel@nongnu.org; Fri, 04 Sep 2009 05:14:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56469) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MjUsi-0007ZM-K8 for qemu-devel@nongnu.org; Fri, 04 Sep 2009 05:14:56 -0400 From: Amit Shah Date: Fri, 4 Sep 2009 14:44:30 +0530 Message-Id: <1252055670-26958-1-git-send-email-amit.shah@redhat.com> Subject: [Qemu-devel] [PATCH] virtio-console: Have a static instance of virtconsole List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Amit Shah Currently the VirtIOConsole struct is allocated from the call to virtio_common_init, also doing an UP_CAST implicitly. The new multiport functionality will need a few arrays and it's easier to move to the new VMState infrastructure by keeping it all within one struct. Signed-off-by: Amit Shah --- hw/virtio-console.c | 37 +++++++++++++++++++++---------------- 1 files changed, 21 insertions(+), 16 deletions(-) diff --git a/hw/virtio-console.c b/hw/virtio-console.c index 57f8f89..5d08321 100644 --- a/hw/virtio-console.c +++ b/hw/virtio-console.c @@ -19,11 +19,13 @@ typedef struct VirtIOConsole { - VirtIODevice vdev; + VirtIODevice *vdev; VirtQueue *ivq, *ovq; CharDriverState *chr; } VirtIOConsole; +VirtIOConsole virtconsole; + static VirtIOConsole *to_virtio_console(VirtIODevice *vdev) { return (VirtIOConsole *)vdev; @@ -61,7 +63,7 @@ static int vcon_can_read(void *opaque) VirtIOConsole *s = (VirtIOConsole *) opaque; if (!virtio_queue_ready(s->ivq) || - !(s->vdev.status & VIRTIO_CONFIG_S_DRIVER_OK) || + !(s->vdev->status & VIRTIO_CONFIG_S_DRIVER_OK) || virtio_queue_empty(s->ivq)) return 0; @@ -97,7 +99,7 @@ static void vcon_read(void *opaque, const uint8_t *buf, int size) } virtqueue_push(s->ivq, &elem, size); } - virtio_notify(&s->vdev, s->ivq); + virtio_notify(s->vdev, s->ivq); } static void vcon_event(void *opaque, int event) @@ -109,7 +111,7 @@ static void virtio_console_save(QEMUFile *f, void *opaque) { VirtIOConsole *s = opaque; - virtio_save(&s->vdev, f); + virtio_save(s->vdev, f); } static int virtio_console_load(QEMUFile *f, void *opaque, int version_id) @@ -119,25 +121,28 @@ static int virtio_console_load(QEMUFile *f, void *opaque, int version_id) if (version_id != 1) return -EINVAL; - virtio_load(&s->vdev, f); + virtio_load(s->vdev, f); return 0; } VirtIODevice *virtio_console_init(DeviceState *dev) { - VirtIOConsole *s; - s = (VirtIOConsole *)virtio_common_init("virtio-console", - VIRTIO_ID_CONSOLE, - 0, sizeof(VirtIOConsole)); - s->vdev.get_features = virtio_console_get_features; + virtconsole.vdev = virtio_common_init("virtio-console", + VIRTIO_ID_CONSOLE, + 0, sizeof(VirtIODevice)); + virtconsole.vdev->get_features = virtio_console_get_features; - s->ivq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_input); - s->ovq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_output); + virtconsole.ivq = virtio_add_queue(virtconsole.vdev, 128, + virtio_console_handle_input); + virtconsole.ovq = virtio_add_queue(virtconsole.vdev, 128, + virtio_console_handle_output); - s->chr = qdev_init_chardev(dev); - qemu_chr_add_handlers(s->chr, vcon_can_read, vcon_read, vcon_event, s); + virtconsole.chr = qdev_init_chardev(dev); + qemu_chr_add_handlers(virtconsole.chr, vcon_can_read, vcon_read, vcon_event, + &virtconsole); - register_savevm("virtio-console", -1, 1, virtio_console_save, virtio_console_load, s); + register_savevm("virtio-console", -1, 1, virtio_console_save, + virtio_console_load, &virtconsole); - return &s->vdev; + return virtconsole.vdev; } -- 1.6.2.5