mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-05 14:07:41 -07:00
Add VMState support for structs
This patch adds support for saving one VMStateDescription from other VMStateDescription. Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
695dcf71eb
commit
ec245e2111
2 changed files with 25 additions and 2 deletions
15
savevm.c
15
savevm.c
|
|
@ -983,7 +983,13 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd,
|
|||
}
|
||||
for (i = 0; i < n_elems; i++) {
|
||||
void *addr = base_addr + field->size * i;
|
||||
ret = field->info->get(f, addr, field->size);
|
||||
|
||||
if (field->flags & VMS_STRUCT) {
|
||||
ret = vmstate_load_state(f, field->vmsd, addr, version_id);
|
||||
} else {
|
||||
ret = field->info->get(f, addr, field->size);
|
||||
|
||||
}
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -1011,7 +1017,12 @@ void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd,
|
|||
}
|
||||
for (i = 0; i < n_elems; i++) {
|
||||
const void *addr = base_addr + field->size * i;
|
||||
field->info->put(f, addr, field->size);
|
||||
|
||||
if (field->flags & VMS_STRUCT) {
|
||||
vmstate_save_state(f, field->vmsd, addr);
|
||||
} else {
|
||||
field->info->put(f, addr, field->size);
|
||||
}
|
||||
}
|
||||
field++;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue