qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 16/25] vmstate: Introduce the concept of sub-arrays


From: Juan Quintela
Subject: [Qemu-devel] [PATCH 16/25] vmstate: Introduce the concept of sub-arrays
Date: Mon, 19 Oct 2009 20:43:01 +0200

VMSTATE_SUB_ARRAY(..., start, num, ...) saves the num elems starting at
position start of the array

Signed-off-by: Juan Quintela <address@hidden>
---
 hw/hw.h |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/hw/hw.h b/hw/hw.h
index d3bf0a7..b98f0c9 100644
--- a/hw/hw.h
+++ b/hw/hw.h
@@ -352,6 +352,9 @@ extern const VMStateInfo vmstate_info_unused_buffer;
     (offsetof(_state, _field) +                                      \
      type_check_array(_type, typeof_field(_state, _field), _num))

+#define vmstate_offset_sub_array(_state, _field, _type, _start)      \
+    (offsetof(_state, _field[_start]))
+
 #define vmstate_offset_buffer(_state, _field)                        \
     vmstate_offset_array(_state, _field, uint8_t,                    \
                          sizeof(typeof_field(_state, _field)))
@@ -395,6 +398,16 @@ extern const VMStateInfo vmstate_info_unused_buffer;
     .offset       = vmstate_offset_array(_state, _field, _type, _num),\
 }

+#define VMSTATE_SUB_ARRAY(_field, _state, _start, _num, _version, _info, 
_type) { \
+    .name       = (stringify(_field)),                               \
+    .version_id = (_version),                                        \
+    .num        = (_num),                                            \
+    .info       = &(_info),                                          \
+    .size       = sizeof(_type),                                     \
+    .flags      = VMS_ARRAY,                                         \
+    .offset     = vmstate_offset_sub_array(_state, _field, _type, _start), \
+}
+
 #define VMSTATE_VARRAY_INT32(_field, _state, _field_num, _version, _info, 
_type) {\
     .name       = (stringify(_field)),                               \
     .version_id = (_version),                                        \
@@ -614,6 +627,12 @@ extern const VMStateDescription vmstate_i2c_slave;
 #define VMSTATE_INT32_ARRAY(_f, _s, _n)                               \
     VMSTATE_INT32_ARRAY_V(_f, _s, _n, 0)

+#define VMSTATE_UINT32_SUB_ARRAY(_f, _s, _start, _num)                \
+    VMSTATE_SUB_ARRAY(_f, _s, _start, _num, 0, vmstate_info_uint32, uint32_t)
+
+#define VMSTATE_UINT32_ARRAY(_f, _s, _n)                              \
+    VMSTATE_UINT32_ARRAY_V(_f, _s, _n, 0)
+
 #define VMSTATE_BUFFER_V(_f, _s, _v)                                  \
     VMSTATE_STATIC_BUFFER(_f, _s, _v, 0, sizeof(typeof_field(_s, _f)))

-- 
1.6.2.5





reply via email to

[Prev in Thread] Current Thread [Next in Thread]