Revision bd7f92e5 include/migration/vmstate.h

b/include/migration/vmstate.h
164 164
extern const VMStateInfo vmstate_info_unused_buffer;
165 165
extern const VMStateInfo vmstate_info_bitmap;
166 166

  
167
#define type_check_2darray(t1,t2,n,m) ((t1(*)[n][m])0 - (t2*)0)
167 168
#define type_check_array(t1,t2,n) ((t1(*)[n])0 - (t2*)0)
168 169
#define type_check_pointer(t1,t2) ((t1**)0 - (t2*)0)
169 170

  
......
179 180
    (offsetof(_state, _field) +                                      \
180 181
     type_check_array(_type, typeof_field(_state, _field), _num))
181 182

  
183
#define vmstate_offset_2darray(_state, _field, _type, _n1, _n2)      \
184
    (offsetof(_state, _field) +                                      \
185
     type_check_2darray(_type, typeof_field(_state, _field), _n1, _n2))
186

  
182 187
#define vmstate_offset_sub_array(_state, _field, _type, _start)      \
183 188
    (offsetof(_state, _field[_start]))
184 189

  
......
224 229
    .offset     = vmstate_offset_array(_state, _field, _type, _num), \
225 230
}
226 231

  
232
#define VMSTATE_2DARRAY(_field, _state, _n1, _n2, _version, _info, _type) { \
233
    .name       = (stringify(_field)),                                      \
234
    .version_id = (_version),                                               \
235
    .num        = (_n1) * (_n2),                                            \
236
    .info       = &(_info),                                                 \
237
    .size       = sizeof(_type),                                            \
238
    .flags      = VMS_ARRAY,                                                \
239
    .offset     = vmstate_offset_2darray(_state, _field, _type, _n1, _n2),  \
240
}
241

  
227 242
#define VMSTATE_ARRAY_TEST(_field, _state, _num, _test, _info, _type) {\
228 243
    .name         = (stringify(_field)),                              \
229 244
    .field_exists = (_test),                                          \
......
592 607
#define VMSTATE_UINT16_ARRAY_V(_f, _s, _n, _v)                         \
593 608
    VMSTATE_ARRAY(_f, _s, _n, _v, vmstate_info_uint16, uint16_t)
594 609

  
610
#define VMSTATE_UINT16_2DARRAY_V(_f, _s, _n1, _n2, _v)                \
611
    VMSTATE_2DARRAY(_f, _s, _n1, _n2, _v, vmstate_info_uint16, uint16_t)
612

  
595 613
#define VMSTATE_UINT16_ARRAY(_f, _s, _n)                               \
596 614
    VMSTATE_UINT16_ARRAY_V(_f, _s, _n, 0)
597 615

  
616
#define VMSTATE_UINT16_2DARRAY(_f, _s, _n1, _n2)                      \
617
    VMSTATE_UINT16_2DARRAY_V(_f, _s, _n1, _n2, 0)
618

  
619
#define VMSTATE_UINT8_2DARRAY_V(_f, _s, _n1, _n2, _v)                 \
620
    VMSTATE_2DARRAY(_f, _s, _n1, _n2, _v, vmstate_info_uint8, uint8_t)
621

  
598 622
#define VMSTATE_UINT8_ARRAY_V(_f, _s, _n, _v)                         \
599 623
    VMSTATE_ARRAY(_f, _s, _n, _v, vmstate_info_uint8, uint8_t)
600 624

  
601 625
#define VMSTATE_UINT8_ARRAY(_f, _s, _n)                               \
602 626
    VMSTATE_UINT8_ARRAY_V(_f, _s, _n, 0)
603 627

  
628
#define VMSTATE_UINT8_2DARRAY(_f, _s, _n1, _n2)                       \
629
    VMSTATE_UINT8_2DARRAY_V(_f, _s, _n1, _n2, 0)
630

  
604 631
#define VMSTATE_UINT32_ARRAY_V(_f, _s, _n, _v)                        \
605 632
    VMSTATE_ARRAY(_f, _s, _n, _v, vmstate_info_uint32, uint32_t)
606 633

  

Also available in: Unified diff