virtio: Migration helper function and macro
To make conversion of virtio devices to VMState simple at first add a helper function for the simple virtio_save case and a helper macro that defines the VMState structure. These will probably go away or change as more of the virtio code gets converted. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
71945ae164
commit
5943124cc0
|
@ -1464,6 +1464,12 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f)
|
|||
vmstate_save_state(f, &vmstate_virtio, vdev, NULL);
|
||||
}
|
||||
|
||||
/* A wrapper for use as a VMState .put function */
|
||||
void virtio_vmstate_save(QEMUFile *f, void *opaque, size_t size)
|
||||
{
|
||||
virtio_save(VIRTIO_DEVICE(opaque), f);
|
||||
}
|
||||
|
||||
static int virtio_set_features_nocheck(VirtIODevice *vdev, uint64_t val)
|
||||
{
|
||||
VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev);
|
||||
|
|
|
@ -171,6 +171,26 @@ bool virtio_should_notify(VirtIODevice *vdev, VirtQueue *vq);
|
|||
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);
|
||||
|
||||
#define VMSTATE_VIRTIO_DEVICE(devname, v, getf, putf) \
|
||||
static const VMStateDescription vmstate_virtio_ ## devname = { \
|
||||
.name = "virtio-" #devname , \
|
||||
.minimum_version_id = v, \
|
||||
.version_id = v, \
|
||||
.fields = (VMStateField[]) { \
|
||||
{ \
|
||||
.name = "virtio", \
|
||||
.info = &(const VMStateInfo) {\
|
||||
.name = "virtio", \
|
||||
.get = getf, \
|
||||
.put = putf, \
|
||||
}, \
|
||||
.flags = VMS_SINGLE, \
|
||||
}, \
|
||||
VMSTATE_END_OF_LIST() \
|
||||
} \
|
||||
}
|
||||
|
||||
int virtio_load(VirtIODevice *vdev, QEMUFile *f, int version_id);
|
||||
|
||||
|
|
Loading…
Reference in a new issue