From: fred.konrad@greensocs.com
To: qemu-devel@nongnu.org, aliguori@us.ibm.com
Cc: kwolf@redhat.com, peter.maydell@linaro.org,
	e.voevodin@samsung.com, mst@redhat.com,
	mark.burton@greensocs.com, agraf@suse.de, amit.shah@redhat.com,
	aneesh.kumar@linux.vnet.ibm.com, stefanha@redhat.com,
	cornelia.huck@de.ibm.com, pbonzini@redhat.com, afaerber@suse.de,
	fred.konrad@greensocs.com
Subject: [Qemu-devel] [PATCH 51/61] virtio-serial : cleanup : use QOM casts.
Date: Mon,  7 Jan 2013 19:41:04 +0100	[thread overview]
Message-ID: <1357584074-10852-52-git-send-email-fred.konrad@greensocs.com> (raw)
In-Reply-To: <1357584074-10852-1-git-send-email-fred.konrad@greensocs.com>
From: KONRAD Frederic <fred.konrad@greensocs.com>
As the virtio-serial-pci and virtio-serial-s390 are switched to the new
API, we can use QOM casts. This shouldn't been applyied before
virtio-serial-pci and virtio-serial-s390 refactoring as their
VirtIODevice were not a QOM object.
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
 hw/virtio-serial-bus.c | 50 ++++++++++++++++++++++++++------------------------
 hw/virtio-serial.h     |  2 +-
 2 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c
index f1c7d75..3bcb2d7 100644
--- a/hw/virtio-serial-bus.c
+++ b/hw/virtio-serial-bus.c
@@ -53,7 +53,8 @@ static VirtIOSerialPort *find_port_by_vq(VirtIOSerial *vser, VirtQueue *vq)
 
 static bool use_multiport(VirtIOSerial *vser)
 {
-    return vser->vdev.guest_features & (1 << VIRTIO_CONSOLE_F_MULTIPORT);
+    VirtIODevice *vdev = VIRTIO_DEVICE(vser);
+    return vdev->guest_features & (1 << VIRTIO_CONSOLE_F_MULTIPORT);
 }
 
 static size_t write_to_port(VirtIOSerialPort *port,
@@ -83,7 +84,7 @@ static size_t write_to_port(VirtIOSerialPort *port,
         virtqueue_push(vq, &elem, len);
     }
 
-    virtio_notify(&port->vser->vdev, vq);
+    virtio_notify(VIRTIO_DEVICE(port->vser), vq);
     return offset;
 }
 
@@ -173,7 +174,7 @@ static void flush_queued_data(VirtIOSerialPort *port)
     if (!virtio_queue_ready(port->ovq)) {
         return;
     }
-    do_flush_queued_data(port, port->ovq, &port->vser->vdev);
+    do_flush_queued_data(port, port->ovq, VIRTIO_DEVICE(port->vser));
 }
 
 static size_t send_control_msg(VirtIOSerial *vser, void *buf, size_t len)
@@ -192,7 +193,7 @@ static size_t send_control_msg(VirtIOSerial *vser, void *buf, size_t len)
     memcpy(elem.in_sg[0].iov_base, buf, len);
 
     virtqueue_push(vq, &elem, len);
-    virtio_notify(&vser->vdev, vq);
+    virtio_notify(VIRTIO_DEVICE(vser), vq);
     return len;
 }
 
@@ -231,7 +232,7 @@ int virtio_serial_close(VirtIOSerialPort *port)
      * consume, reset the throttling flag and discard the data.
      */
     port->throttled = false;
-    discard_vq_data(port->ovq, &port->vser->vdev);
+    discard_vq_data(port->ovq, VIRTIO_DEVICE(port->vser));
 
     send_control_event(port->vser, port->id, VIRTIO_CONSOLE_PORT_OPEN, 0);
 
@@ -254,11 +255,12 @@ ssize_t virtio_serial_write(VirtIOSerialPort *port, const uint8_t *buf,
  */
 size_t virtio_serial_guest_ready(VirtIOSerialPort *port)
 {
+    VirtIODevice *vdev = VIRTIO_DEVICE(port->vser);
     VirtQueue *vq = port->ivq;
     unsigned int bytes;
 
     if (!virtio_queue_ready(vq) ||
-        !(port->vser->vdev.status & VIRTIO_CONFIG_S_DRIVER_OK) ||
+        !(vdev->status & VIRTIO_CONFIG_S_DRIVER_OK) ||
         virtio_queue_empty(vq)) {
         return 0;
     }
@@ -413,7 +415,7 @@ static void control_out(VirtIODevice *vdev, VirtQueue *vq)
     uint8_t *buf;
     size_t len;
 
-    vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
+    vser = VIRTIO_SERIAL(vdev);
 
     len = 0;
     buf = NULL;
@@ -446,7 +448,7 @@ static void handle_output(VirtIODevice *vdev, VirtQueue *vq)
     VirtIOSerial *vser;
     VirtIOSerialPort *port;
 
-    vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
+    vser = VIRTIO_SERIAL(vdev);
     port = find_port_by_vq(vser, vq);
 
     if (!port || !port->host_connected) {
@@ -468,7 +470,7 @@ static uint32_t get_features(VirtIODevice *vdev, uint32_t features)
 {
     VirtIOSerial *vser;
 
-    vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
+    vser = VIRTIO_SERIAL(vdev);
 
     if (vser->bus.max_nr_ports > 1) {
         features |= (1 << VIRTIO_CONSOLE_F_MULTIPORT);
@@ -481,7 +483,7 @@ static void get_config(VirtIODevice *vdev, uint8_t *config_data)
 {
     VirtIOSerial *vser;
 
-    vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
+    vser = VIRTIO_SERIAL(vdev);
     memcpy(config_data, &vser->config, sizeof(struct virtio_console_config));
 }
 
@@ -513,7 +515,7 @@ static void set_status(VirtIODevice *vdev, uint8_t status)
     VirtIOSerial *vser;
     VirtIOSerialPort *port;
 
-    vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
+    vser = VIRTIO_SERIAL(vdev);
     port = find_port_by_id(vser, 0);
 
     if (port && !use_multiport(port->vser)
@@ -535,19 +537,19 @@ static void vser_reset(VirtIODevice *vdev)
 {
     VirtIOSerial *vser;
 
-    vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
+    vser = VIRTIO_SERIAL(vdev);
     guest_reset(vser);
 }
 
 static void virtio_serial_save(QEMUFile *f, void *opaque)
 {
-    VirtIOSerial *s = opaque;
+    VirtIOSerial *s = VIRTIO_SERIAL(opaque);
     VirtIOSerialPort *port;
     uint32_t nr_active_ports;
     unsigned int i, max_nr_ports;
 
     /* The virtio device */
-    virtio_save(&s->vdev, f);
+    virtio_save(VIRTIO_DEVICE(s), f);
 
     /* The config space */
     qemu_put_be16s(f, &s->config.cols);
@@ -598,7 +600,7 @@ static void virtio_serial_save(QEMUFile *f, void *opaque)
 static void virtio_serial_post_load_timer_cb(void *opaque)
 {
     uint32_t i;
-    VirtIOSerial *s = opaque;
+    VirtIOSerial *s = VIRTIO_SERIAL(opaque);
     VirtIOSerialPort *port;
     uint8_t host_connected;
 
@@ -681,7 +683,7 @@ static int fetch_active_ports_list(QEMUFile *f, int version_id,
 
 static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id)
 {
-    VirtIOSerial *s = opaque;
+    VirtIOSerial *s = VIRTIO_SERIAL(opaque);
     uint32_t max_nr_ports, nr_active_ports, ports_map;
     unsigned int i;
     int ret;
@@ -691,7 +693,7 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id)
     }
 
     /* The virtio device */
-    ret = virtio_load(&s->vdev, f);
+    ret = virtio_load(VIRTIO_DEVICE(s), f);
     if (ret) {
         return ret;
     }
@@ -818,7 +820,7 @@ static void remove_port(VirtIOSerial *vser, uint32_t port_id)
     assert(port);
 
     /* Flush out any unconsumed buffers first */
-    discard_vq_data(port->ovq, &port->vser->vdev);
+    discard_vq_data(port->ovq, VIRTIO_DEVICE(port->vser));
 
     send_control_event(vser, port->id, VIRTIO_CONSOLE_PORT_REMOVE, 1);
 }
@@ -882,7 +884,7 @@ static int virtser_port_qdev_init(DeviceState *qdev)
     add_port(port->vser, port->id);
 
     /* Send an update to the guest about this new port added */
-    virtio_notify_config(&port->vser->vdev);
+    virtio_notify_config(VIRTIO_DEVICE(port->vser));
 
     return ret;
 }
@@ -970,11 +972,11 @@ static int virtio_serial_device_init(VirtIODevice *vdev)
      */
     mark_port_added(vser, 0);
 
-    vser->vdev.get_features = get_features;
-    vser->vdev.get_config = get_config;
-    vser->vdev.set_config = set_config;
-    vser->vdev.set_status = set_status;
-    vser->vdev.reset = vser_reset;
+    vdev->get_features = get_features;
+    vdev->get_config = get_config;
+    vdev->set_config = set_config;
+    vdev->set_status = set_status;
+    vdev->reset = vser_reset;
 
     vser->qdev = qdev;
 
diff --git a/hw/virtio-serial.h b/hw/virtio-serial.h
index f5960f9..7517e8c 100644
--- a/hw/virtio-serial.h
+++ b/hw/virtio-serial.h
@@ -194,7 +194,7 @@ typedef struct VirtIOSerialPostLoad {
 } VirtIOSerialPostLoad;
 
 struct VirtIOSerial {
-    VirtIODevice vdev;
+    VirtIODevice parent_obj;
 
     VirtQueue *c_ivq, *c_ovq;
     /* Arrays of ivqs and ovqs: one per port */
-- 
1.7.11.7
next prev parent reply	other threads:[~2013-01-07 18:50 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-07 18:40 [Qemu-devel] [PATCH 00/61] Virtio refactoring fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 01/61] qdev : add a maximum device allowed field for the bus fred.konrad
2013-01-08 17:05   ` Peter Maydell
2013-01-07 18:40 ` [Qemu-devel] [PATCH 02/61] virtio-bus : introduce virtio-bus fred.konrad
2013-01-08 17:09   ` Peter Maydell
2013-01-07 18:40 ` [Qemu-devel] [PATCH 03/61] virtio-pci-bus : introduce virtio-pci-bus fred.konrad
2013-01-08 18:08   ` Peter Maydell
2013-01-09  8:37     ` KONRAD Frédéric
2013-01-09  9:14       ` KONRAD Frédéric
2013-01-09 14:53         ` Peter Maydell
2013-01-09 14:55           ` KONRAD Frédéric
2013-01-07 18:40 ` [Qemu-devel] [PATCH 04/61] virtio-pci : refactor virtio-pci device fred.konrad
2013-01-08 17:54   ` Peter Maydell
2013-01-09  8:45     ` KONRAD Frédéric
2013-01-09 14:33       ` Peter Maydell
2013-01-07 18:40 ` [Qemu-devel] [PATCH 05/61] virtio-device : refactor virtio-device fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 06/61] virtio-s390-bus : add virtio-s390-bus fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 07/61] virtio-s390-device : create a virtio-s390-bus during init fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 08/61] virtio-blk : show VirtIOBlock structure fred.konrad
2013-01-08 16:18   ` Peter Maydell
2013-01-07 18:40 ` [Qemu-devel] [PATCH 09/61] virtio-blk : don't use pointer for configuration fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 10/61] virtio-blk : add the virtio-blk device fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 11/61] virtio-blk-pci : switch to new API fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 12/61] virtio-blk-s390 : switch to the " fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 13/61] virtio-blk : cleanup : use QOM cast fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 14/61] virtio-blk : cleanup : remove qdev field fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 15/61] virtio-net : show the VirtIONet structure fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 16/61] virtio-net : add the virtio-net device fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 17/61] virtio-net-pci : switch to the new API fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 18/61] virtio-net-s390 " fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 19/61] virtio-net : cleanup : use QOM cast fred.konrad
2013-01-07 21:16   ` Michael S. Tsirkin
2013-01-07 21:17     ` Anthony Liguori
2013-01-07 21:33       ` Michael S. Tsirkin
2013-01-07 21:53         ` Anthony Liguori
2013-01-07 18:40 ` [Qemu-devel] [PATCH 20/61] virtio-net : cleanup : init and exit function fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 21/61] virtio-net : cleanup : remove qdev field fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 22/61] virtio-scsi : show the VirtIOSCSI structure fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 23/61] virtio-scsi : don't use pointer for configuration fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 24/61] virtio-scsi : allocate cmd_vqs array separately fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 25/61] virtio-scsi : moving host_features from properties to transport properties fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 26/61] virtio-scsi : add the virtio-scsi device fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 27/61] virtio-scsi-pci : switch to new API fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 28/61] virtio-scsi-s390 : switch to the " fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 29/61] virtio-scsi : cleanup : use QOM casts fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 30/61] virtio-scsi : cleanup : init and exit functions fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 31/61] virtio-scsi : cleanup : remove qdev field fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 32/61] virtio-balloon : show the VirtIOBalloon structure fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 33/61] virtio-balloon : add the virtio-balloon device fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 34/61] virtio-balloon-pci : switch to the new API fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 35/61] virtio-balloon : cleanup : init and exit function fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 36/61] virtio-balloon : cleanup : QOM casts fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 37/61] virtio-balloon : cleanup : remove qdev field fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 38/61] virtio-rng : show the VirtIORNG structure fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 39/61] virtio-rng : don't use pointer for configuration fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 40/61] virtio-rng : add virtio-rng device fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 41/61] virtio-rng-s390 : switch to the new API fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 42/61] virtio-rng-pci " fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 43/61] virtio-rng.c : cleanup : init and exit functions fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 44/61] virtio-rng.c : cleanup : remove qdev field fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 45/61] virtio-rng.c : cleanup : use QOM casts fred.konrad
2013-01-07 18:40 ` [Qemu-devel] [PATCH 46/61] virtio-serial : show structures fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 47/61] virtio-serial : add the virtio-serial device fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 48/61] virtio-serial-pci : switch to the new API fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 49/61] virtio-serial-s390 " fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 50/61] virtio-serial : cleanup : init and exit functions fred.konrad
2013-01-07 18:41 ` fred.konrad [this message]
2013-01-07 18:41 ` [Qemu-devel] [PATCH 52/61] virtio-serial : cleanup : remove qdev field fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 53/61] virtio-9p : add the virtio-9p device fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 54/61] virtio-9p-pci : switch to the new API fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 55/61] virtio-9p : cleanup : init function fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 56/61] virtio-9p : cleanup : QOM casts fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 57/61] virtio : remove the function pointer fred.konrad
2013-01-09 20:40   ` Blue Swirl
2013-01-09 21:44     ` KONRAD Frédéric
2013-01-12  9:50       ` Blue Swirl
2013-01-07 18:41 ` [Qemu-devel] [PATCH 58/61] virtio-pci : cleanup : init, exit and reset functions fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 59/61] s390-virtio-bus : cleanup fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 60/61] virtio : remove virtiobindings fred.konrad
2013-01-07 18:41 ` [Qemu-devel] [PATCH 61/61] virtio : cleanup : init and exit function fred.konrad
2013-01-07 19:11 ` [Qemu-devel] [PATCH 00/61] Virtio refactoring Anthony Liguori
2013-01-08 13:40   ` KONRAD Frédéric
2013-01-08 15:54   ` Peter Maydell
2013-01-08 16:22     ` Anthony Liguori
2013-01-08 16:25       ` Peter Maydell
2013-01-07 20:04 ` Michael S. Tsirkin
2013-01-07 20:15   ` Anthony Liguori
2013-01-08 14:21 ` Peter Maydell
2013-01-08 14:33   ` KONRAD Frédéric
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox
  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):
  git send-email \
    --in-reply-to=1357584074-10852-52-git-send-email-fred.konrad@greensocs.com \
    --to=fred.konrad@greensocs.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=aliguori@us.ibm.com \
    --cc=amit.shah@redhat.com \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=e.voevodin@samsung.com \
    --cc=kwolf@redhat.com \
    --cc=mark.burton@greensocs.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY
  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
  Be sure your reply has a Subject: header at the top and a blank line
  before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).