[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 21/33] virtio: prepare change VMSTATE_VIRTIO_DEVICE m
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL 21/33] virtio: prepare change VMSTATE_VIRTIO_DEVICE macro |
Date: |
Mon, 10 Oct 2016 05:58:03 +0300 |
From: Halil Pasic <address@hidden>
In most cases the functions passed to VMSTATE_VIRTIO_DEVICE
only call the virtio_load and virtio_save wrappers. Some include some
pre- and post- massaging too. The massaging is better expressed
as such in the VMStateDescription.
Let us prepare for changing the semantic of the VMSTATE_VIRTIO_DEVICE
macro so that it is more similar to the other VMSTATE_*_DEVICE macros
in a sense that it is a field definition.
The preprocessor conditionals are going to be removed as soon as
every usage is converted to the new semantic.
Signed-off-by: Halil Pasic <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
include/hw/virtio/virtio.h | 16 ++++++++++++++++
hw/virtio/virtio.c | 21 +++++++++++++++++++++
2 files changed, 37 insertions(+)
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index e25ec4f..929fa92 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -179,6 +179,20 @@ void virtio_notify(VirtIODevice *vdev, VirtQueue *vq);
void virtio_save(VirtIODevice *vdev, QEMUFile *f);
void virtio_vmstate_save(QEMUFile *f, void *opaque, size_t size);
+extern const VMStateInfo virtio_vmstate_info;
+
+#ifdef VMSTATE_VIRTIO_DEVICE_USE_NEW
+
+#define VMSTATE_VIRTIO_DEVICE \
+ { \
+ .name = "virtio", \
+ .info = &virtio_vmstate_info, \
+ .flags = VMS_SINGLE, \
+ }
+
+#else
+/* TODO remove conditional as soon as all users are converted */
+
#define VMSTATE_VIRTIO_DEVICE(devname, v, getf, putf) \
static const VMStateDescription vmstate_virtio_ ## devname = { \
.name = "virtio-" #devname , \
@@ -198,6 +212,8 @@ void virtio_vmstate_save(QEMUFile *f, void *opaque, size_t
size);
} \
}
+#endif
+
int virtio_load(VirtIODevice *vdev, QEMUFile *f, int version_id);
void virtio_notify_config(VirtIODevice *vdev);
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 46f79c9..62b9c00 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -1645,6 +1645,27 @@ void virtio_vmstate_save(QEMUFile *f, void *opaque,
size_t size)
virtio_save(VIRTIO_DEVICE(opaque), f);
}
+/* A wrapper for use as a VMState .put function */
+static void virtio_device_put(QEMUFile *f, void *opaque, size_t size)
+{
+ virtio_save(VIRTIO_DEVICE(opaque), f);
+}
+
+/* A wrapper for use as a VMState .get function */
+static int virtio_device_get(QEMUFile *f, void *opaque, size_t size)
+{
+ VirtIODevice *vdev = VIRTIO_DEVICE(opaque);
+ DeviceClass *dc = DEVICE_CLASS(VIRTIO_DEVICE_GET_CLASS(vdev));
+
+ return virtio_load(vdev, f, dc->vmsd->version_id);
+}
+
+const VMStateInfo virtio_vmstate_info = {
+ .name = "virtio",
+ .get = virtio_device_get,
+ .put = virtio_device_put,
+};
+
static int virtio_set_features_nocheck(VirtIODevice *vdev, uint64_t val)
{
VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev);
--
MST
- [Qemu-devel] [PULL 13/33] virtio-9p: handle handle_9p_output() error, (continued)
- [Qemu-devel] [PULL 13/33] virtio-9p: handle handle_9p_output() error, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 18/33] virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error(), Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 24/33] virtio-9p: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 27/33] virtio-input: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 16/33] virtio-net: handle virtio_net_receive() errors, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 10/33] virtio-serial: add missing virtio_detach_element() call, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 20/33] net: don't poke at chardev internal QemuOpts, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 23/33] virtio-net: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 15/33] virtio-net: handle virtio_net_handle_ctrl() error, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 29/33] virtio-balloon: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 21/33] virtio: prepare change VMSTATE_VIRTIO_DEVICE macro,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL 26/33] virtio-gpu: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 22/33] virtio-blk: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 14/33] virtio-blk: handle virtio_blk_handle_request() errors, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 31/33] vhost-vsock: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 12/33] virtio-blk: make some functions static, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 28/33] virtio-scsi: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 11/33] virtio-9p: add parentheses to sizeof operator, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 25/33] virtio-serial: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 30/33] virtio-rng: convert VMSTATE_VIRTIO_DEVICE, Michael S. Tsirkin, 2016/10/09
- [Qemu-devel] [PULL 33/33] intel-iommu: Check IOAPIC's Trigger Mode against the one in IRTE, Michael S. Tsirkin, 2016/10/09