migration: extend VMStateInfo

Current migration code cannot handle some data structures such as
QTAILQ in qemu/queue.h. Here we extend the signatures of put/get
in VMStateInfo so that customized handling is supported. put now
will return int type.

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

Signed-off-by: Jianjun Duan <duanj@linux.vnet.ibm.com>
Message-Id: <1484852453-12728-2-git-send-email-duanj@linux.vnet.ibm.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
Jianjun Duan 2017-01-19 11:00:50 -08:00 committed by Dr. David Alan Gilbert
parent d7fc72ceb5
commit 2c21ee769e
22 changed files with 262 additions and 105 deletions

View file

@ -105,7 +105,7 @@ static int cpu_load_old(QEMUFile *f, void *opaque, int version_id)
return 0;
}
static int get_avr(QEMUFile *f, void *pv, size_t size)
static int get_avr(QEMUFile *f, void *pv, size_t size, VMStateField *field)
{
ppc_avr_t *v = pv;
@ -115,12 +115,14 @@ static int get_avr(QEMUFile *f, void *pv, size_t size)
return 0;
}
static void put_avr(QEMUFile *f, void *pv, size_t size)
static int put_avr(QEMUFile *f, void *pv, size_t size, VMStateField *field,
QJSON *vmdesc)
{
ppc_avr_t *v = pv;
qemu_put_be64(f, v->u64[0]);
qemu_put_be64(f, v->u64[1]);
return 0;
}
static const VMStateInfo vmstate_info_avr = {
@ -353,7 +355,7 @@ static const VMStateDescription vmstate_sr = {
};
#ifdef TARGET_PPC64
static int get_slbe(QEMUFile *f, void *pv, size_t size)
static int get_slbe(QEMUFile *f, void *pv, size_t size, VMStateField *field)
{
ppc_slb_t *v = pv;
@ -363,12 +365,14 @@ static int get_slbe(QEMUFile *f, void *pv, size_t size)
return 0;
}
static void put_slbe(QEMUFile *f, void *pv, size_t size)
static int put_slbe(QEMUFile *f, void *pv, size_t size, VMStateField *field,
QJSON *vmdesc)
{
ppc_slb_t *v = pv;
qemu_put_be64(f, v->esid);
qemu_put_be64(f, v->vsid);
return 0;
}
static const VMStateInfo vmstate_info_slbe = {