diff --git a/hw/hw.h b/hw/hw.h index 8c223f8462..c3790001b3 100644 --- a/hw/hw.h +++ b/hw/hw.h @@ -464,6 +464,15 @@ extern const VMStateInfo vmstate_info_buffer; + type_check_array(uint8_t,typeof_field(_state, _field),sizeof(typeof_field(_state,_field))) \ } +#define VMSTATE_STATIC_BUFFER_TEST(_field, _state, _test) { \ + .name = (stringify(_field)), \ + .field_exists = (_test), \ + .size = sizeof(typeof_field(_state,_field)), \ + .info = &vmstate_info_buffer, \ + .flags = VMS_BUFFER, \ + .offset = offsetof(_state, _field) \ + + type_check_array(uint8_t,typeof_field(_state, _field),sizeof(typeof_field(_state,_field))) \ +} #define VMSTATE_BUFFER_START_MIDDLE(_field, _state, start) { \ .name = (stringify(_field)), \ .size = sizeof(typeof_field(_state,_field)) - start, \ @@ -613,6 +622,9 @@ extern const VMStateDescription vmstate_i2c_slave; #define VMSTATE_BUFFER(_f, _s) \ VMSTATE_STATIC_BUFFER(_f, _s, 0) +#define VMSTATE_BUFFER_TEST(_f, _s, _t) \ + VMSTATE_STATIC_BUFFER_TEST(_f, _s, _t) + #ifdef NEED_CPU_H #if TARGET_LONG_BITS == 64 #define VMSTATE_UINTTL_V(_f, _s, _v) \