Lines Matching refs:vmsd

24 static int vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd,
27 static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd,
32 vmstate_field_exists(const VMStateDescription *vmsd, const VMStateField *field, in vmstate_field_exists() argument
40 trace_vmstate_field_exists(vmsd->name, field->name, field->version_id, in vmstate_field_exists()
134 int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd, in vmstate_load_state() argument
137 const VMStateField *field = vmsd->fields; in vmstate_load_state()
140 trace_vmstate_load_state(vmsd->name, version_id); in vmstate_load_state()
141 if (version_id > vmsd->version_id) { in vmstate_load_state()
144 vmsd->name, version_id, vmsd->version_id); in vmstate_load_state()
145 trace_vmstate_load_state_end(vmsd->name, "too new", -EINVAL); in vmstate_load_state()
148 if (version_id < vmsd->minimum_version_id) { in vmstate_load_state()
151 vmsd->name, version_id, vmsd->minimum_version_id); in vmstate_load_state()
152 trace_vmstate_load_state_end(vmsd->name, "too old", -EINVAL); in vmstate_load_state()
155 if (vmsd->pre_load) { in vmstate_load_state()
156 ret = vmsd->pre_load(opaque); in vmstate_load_state()
162 bool exists = vmstate_field_exists(vmsd, field, opaque, version_id); in vmstate_load_state()
163 trace_vmstate_load_state_field(vmsd->name, field->name, exists); in vmstate_load_state()
194 ret = vmstate_load_state(f, inner_field->vmsd, curr_elem, in vmstate_load_state()
195 inner_field->vmsd->version_id); in vmstate_load_state()
197 ret = vmstate_load_state(f, inner_field->vmsd, curr_elem, in vmstate_load_state()
214 error_report("Failed to load %s:%s", vmsd->name, in vmstate_load_state()
222 vmsd->name, field->name); in vmstate_load_state()
228 ret = vmstate_subsection_load(f, vmsd, opaque); in vmstate_load_state()
233 if (vmsd->post_load) { in vmstate_load_state()
234 ret = vmsd->post_load(opaque, version_id); in vmstate_load_state()
236 trace_vmstate_load_state_end(vmsd->name, "end", ret); in vmstate_load_state()
300 const VMStateField *sfield = field->vmsd->fields; in vmsd_can_compress()
309 if (field->vmsd->subsections) { in vmsd_can_compress()
318 static void vmsd_desc_field_start(const VMStateDescription *vmsd, in vmsd_desc_field_start() argument
333 if (!vmfield_name_is_unique(vmsd->fields, field)) { in vmsd_desc_field_start()
334 int num = vmfield_name_num(vmsd->fields, field); in vmsd_desc_field_start()
358 static void vmsd_desc_field_end(const VMStateDescription *vmsd, in vmsd_desc_field_end() argument
376 bool vmstate_section_needed(const VMStateDescription *vmsd, void *opaque) in vmstate_section_needed() argument
378 if (vmsd->needed && !vmsd->needed(opaque)) { in vmstate_section_needed()
386 int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd, in vmstate_save_state() argument
389 return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_id, NULL); in vmstate_save_state()
392 int vmstate_save_state_with_err(QEMUFile *f, const VMStateDescription *vmsd, in vmstate_save_state_with_err() argument
395 return vmstate_save_state_v(f, vmsd, opaque, vmdesc_id, vmsd->version_id, errp); in vmstate_save_state_with_err()
398 int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd, in vmstate_save_state_v() argument
402 const VMStateField *field = vmsd->fields; in vmstate_save_state_v()
404 trace_vmstate_save_state_top(vmsd->name); in vmstate_save_state_v()
406 if (vmsd->pre_save) { in vmstate_save_state_v()
407 ret = vmsd->pre_save(opaque); in vmstate_save_state_v()
408 trace_vmstate_save_state_pre_save_res(vmsd->name, ret); in vmstate_save_state_v()
410 error_setg(errp, "pre-save failed: %s", vmsd->name); in vmstate_save_state_v()
416 json_writer_str(vmdesc, "vmsd_name", vmsd->name); in vmstate_save_state_v()
422 if (vmstate_field_exists(vmsd, field, opaque, version_id)) { in vmstate_save_state_v()
430 trace_vmstate_save_state_loop(vmsd->name, field->name, n_elems); in vmstate_save_state_v()
486 vmsd_desc_field_start(vmsd, vmdesc_loop, inner_field, in vmstate_save_state_v()
490 ret = vmstate_save_state(f, inner_field->vmsd, in vmstate_save_state_v()
493 ret = vmstate_save_state_v(f, inner_field->vmsd, in vmstate_save_state_v()
503 vmsd_desc_field_end(vmsd, vmdesc_loop, inner_field, in vmstate_save_state_v()
513 vmsd->name, field->name); in vmstate_save_state_v()
514 if (vmsd->post_save) { in vmstate_save_state_v()
515 vmsd->post_save(opaque); in vmstate_save_state_v()
528 vmsd->name, field->name); in vmstate_save_state_v()
540 ret = vmstate_subsection_save(f, vmsd, opaque, vmdesc, errp); in vmstate_save_state_v()
542 if (vmsd->post_save) { in vmstate_save_state_v()
543 int ps_ret = vmsd->post_save(opaque); in vmstate_save_state_v()
546 error_setg(errp, "post-save failed: %s", vmsd->name); in vmstate_save_state_v()
566 static int vmstate_subsection_load(QEMUFile *f, const VMStateDescription *vmsd, in vmstate_subsection_load() argument
569 trace_vmstate_subsection_load(vmsd->name); in vmstate_subsection_load()
578 if (len < strlen(vmsd->name) + 1) { in vmstate_subsection_load()
580 trace_vmstate_subsection_load_bad(vmsd->name, "(short)", ""); in vmstate_subsection_load()
585 trace_vmstate_subsection_load_bad(vmsd->name, "(peek fail)", ""); in vmstate_subsection_load()
591 if (strncmp(vmsd->name, idstr, strlen(vmsd->name)) != 0) { in vmstate_subsection_load()
592 trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(prefix)"); in vmstate_subsection_load()
596 sub_vmsd = vmstate_get_subsection(vmsd->subsections, idstr); in vmstate_subsection_load()
598 trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(lookup)"); in vmstate_subsection_load()
608 trace_vmstate_subsection_load_bad(vmsd->name, idstr, "(child)"); in vmstate_subsection_load()
613 trace_vmstate_subsection_load_good(vmsd->name); in vmstate_subsection_load()
617 static int vmstate_subsection_save(QEMUFile *f, const VMStateDescription *vmsd, in vmstate_subsection_save() argument
621 const VMStateDescription * const *sub = vmsd->subsections; in vmstate_subsection_save()
625 trace_vmstate_subsection_save_top(vmsd->name); in vmstate_subsection_save()
631 trace_vmstate_subsection_save_loop(vmsd->name, vmsdsub->name); in vmstate_subsection_save()