diff options
-rw-r--r-- | hw/hw.h | 1 | ||||
-rw-r--r-- | savevm.c | 5 |
2 files changed, 6 insertions, 0 deletions
@@ -306,6 +306,7 @@ struct VMStateDescription { int minimum_version_id; int minimum_version_id_old; LoadStateHandler *load_state_old; + int (*pre_load)(void *opaque); int (*post_load)(void *opaque); VMStateField *fields; }; @@ -1028,6 +1028,11 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, if (version_id < vmsd->minimum_version_id) { return vmsd->load_state_old(f, opaque, version_id); } + if (vmsd->pre_load) { + int ret = vmsd->pre_load(opaque); + if (ret) + return ret; + } while(field->name) { if (field->version_id <= version_id) { void *base_addr = opaque + field->offset; |