mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
Add vmstate_load() and vmstate_save() functions
Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
b5a22e4a0a
commit
4082be4df4
1 changed files with 15 additions and 4 deletions
19
savevm.c
19
savevm.c
|
@ -719,6 +719,17 @@ void unregister_savevm(const char *idstr, void *opaque)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vmstate_load(QEMUFile *f, SaveStateEntry *se, int version_id)
|
||||||
|
{
|
||||||
|
return se->load_state(f, se->opaque, version_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void vmstate_save(QEMUFile *f, SaveStateEntry *se)
|
||||||
|
{
|
||||||
|
se->save_state(f, se->opaque);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define QEMU_VM_FILE_MAGIC 0x5145564d
|
#define QEMU_VM_FILE_MAGIC 0x5145564d
|
||||||
#define QEMU_VM_FILE_VERSION_COMPAT 0x00000002
|
#define QEMU_VM_FILE_VERSION_COMPAT 0x00000002
|
||||||
#define QEMU_VM_FILE_VERSION 0x00000003
|
#define QEMU_VM_FILE_VERSION 0x00000003
|
||||||
|
@ -821,7 +832,7 @@ int qemu_savevm_state_complete(QEMUFile *f)
|
||||||
qemu_put_be32(f, se->instance_id);
|
qemu_put_be32(f, se->instance_id);
|
||||||
qemu_put_be32(f, se->version_id);
|
qemu_put_be32(f, se->version_id);
|
||||||
|
|
||||||
se->save_state(f, se->opaque);
|
vmstate_save(f, se);
|
||||||
}
|
}
|
||||||
|
|
||||||
qemu_put_byte(f, QEMU_VM_EOF);
|
qemu_put_byte(f, QEMU_VM_EOF);
|
||||||
|
@ -907,7 +918,7 @@ static int qemu_loadvm_state_v2(QEMUFile *f)
|
||||||
fprintf(stderr, "qemu: warning: instance 0x%x of device '%s' not present in current VM\n",
|
fprintf(stderr, "qemu: warning: instance 0x%x of device '%s' not present in current VM\n",
|
||||||
instance_id, idstr);
|
instance_id, idstr);
|
||||||
} else {
|
} else {
|
||||||
ret = se->load_state(f, se->opaque, version_id);
|
ret = vmstate_load(f, se, version_id);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
fprintf(stderr, "qemu: warning: error while loading state for instance 0x%x of device '%s'\n",
|
fprintf(stderr, "qemu: warning: error while loading state for instance 0x%x of device '%s'\n",
|
||||||
instance_id, idstr);
|
instance_id, idstr);
|
||||||
|
@ -984,7 +995,7 @@ int qemu_loadvm_state(QEMUFile *f)
|
||||||
le->next = first_le;
|
le->next = first_le;
|
||||||
first_le = le;
|
first_le = le;
|
||||||
|
|
||||||
ret = le->se->load_state(f, le->se->opaque, le->version_id);
|
ret = vmstate_load(f, le->se, le->version_id);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
fprintf(stderr, "qemu: warning: error while loading state for instance 0x%x of device '%s'\n",
|
fprintf(stderr, "qemu: warning: error while loading state for instance 0x%x of device '%s'\n",
|
||||||
instance_id, idstr);
|
instance_id, idstr);
|
||||||
|
@ -1002,7 +1013,7 @@ int qemu_loadvm_state(QEMUFile *f)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = le->se->load_state(f, le->se->opaque, le->version_id);
|
ret = vmstate_load(f, le->se, le->version_id);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
fprintf(stderr, "qemu: warning: error while loading state section id %d\n",
|
fprintf(stderr, "qemu: warning: error while loading state section id %d\n",
|
||||||
section_id);
|
section_id);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue