Add VMSTATE_STRUCT_VARRAY_KNOWN
At the moment we have VMSTATE_STRUCT_ARRAY that requires the field is declared as an array of fixed size. We also have VMSTATE_STRUCT_VARRAY_UINT* that allows a field declared as a pointer, but requires that the length is a field member in the structure being loaded/saved. VMSTATE_STRUCT_VARRAY_KNOWN is for arrays defined as pointers yet we somehow know the length of. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Amit Shah <amit.shah@redhat.com>
This commit is contained in:
parent
424e4a87d2
commit
2cf0148674
@ -374,6 +374,19 @@ extern const VMStateInfo vmstate_info_bitmap;
|
|||||||
.offset = vmstate_offset_array(_state, _field, _type, _num),\
|
.offset = vmstate_offset_array(_state, _field, _type, _num),\
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* a variable length array (i.e. _type *_field) but we know the
|
||||||
|
* length
|
||||||
|
*/
|
||||||
|
#define VMSTATE_STRUCT_VARRAY_KNOWN(_field, _state, _num, _version, _vmsd, _type) { \
|
||||||
|
.name = (stringify(_field)), \
|
||||||
|
.num = (_num), \
|
||||||
|
.version_id = (_version), \
|
||||||
|
.vmsd = &(_vmsd), \
|
||||||
|
.size = sizeof(_type), \
|
||||||
|
.flags = VMS_STRUCT|VMS_ARRAY, \
|
||||||
|
.offset = offsetof(_state, _field), \
|
||||||
|
}
|
||||||
|
|
||||||
#define VMSTATE_STRUCT_VARRAY_UINT8(_field, _state, _field_num, _version, _vmsd, _type) { \
|
#define VMSTATE_STRUCT_VARRAY_UINT8(_field, _state, _field_num, _version, _vmsd, _type) { \
|
||||||
.name = (stringify(_field)), \
|
.name = (stringify(_field)), \
|
||||||
.num_offset = vmstate_offset_value(_state, _field_num, uint8_t), \
|
.num_offset = vmstate_offset_value(_state, _field_num, uint8_t), \
|
||||||
|
Loading…
Reference in New Issue
Block a user