On 20.03.2012 1:57 AM, Juan Quintela wrote:
We have an array of structs whose size is an int32 in the same struct that
depends on a test value to know if it is there or not.
Signed-off-by: Juan Quintela<quint...@redhat.com>
---
vmstate.h | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/vmstate.h b/vmstate.h
index 5c56f25..b8ac2d0 100644
--- a/vmstate.h
+++ b/vmstate.h
@@ -309,6 +309,16 @@ extern const VMStateDescription vmstate_cpu;
.offset = offsetof(_state, _field), \
}
+#define VMSTATE_STRUCT_VARRAY_INT32_TEST(_field, _state, _field_num, _test,
_vmsd, _type) { \
+ .name = (stringify(_field)), \
+ .num_offset = vmstate_offset_value(_state, _field_num, int32_t), \
+ .vmsd =&(_vmsd), \
+ .field_exists = (_test), \
+ .size = sizeof(_type), \
+ .flags = VMS_STRUCT|VMS_VARRAY_INT32, \
+ .offset = offsetof(_state, _field), \
+}
+
#define VMSTATE_STRUCT_VARRAY_POINTER_INT32(_field, _state, _field_num,
_vmsd, _type) { \
.name = (stringify(_field)), \
.version_id = 0, \
We already have VMSTATE_STRUCT_VARRAY_INT32, maybe for consistency with
other macro in vmstate.h this should look like this:
#define VMSTATE_STRUCT_VARRAY_INT32_TEST_V(_field, _state, _field_num,
_version, _test, _vmsd, _type) {
.name = (stringify(_field)),
.num_offset = vmstate_offset_value(_state, _field_num, int32_t),
.version_id = (_version),
.vmsd =&(_vmsd),
.field_exists = (_test),
.size = sizeof(_type),
.flags = VMS_STRUCT|VMS_VARRAY_INT32,
.offset = offsetof(_state, _field),
}
#define VMSTATE_STRUCT_VARRAY_INT32_TEST(_field, _state, _field_num,
_test, _vmsd, _type) \
VMSTATE_STRUCT_VARRAY_INT32_TEST_V(_field, _state, _field_num, 0, _test,
_vmsd, _type) {
#define VMSTATE_STRUCT_VARRAY_INT32(_field, _state, _field_num, _vmsd,
_type) \
VMSTATE_STRUCT_VARRAY_INT32_TEST_V(_field, _state, _field_num, 0, NULL,
_vmsd, _type) {