diff options
author | Juan Quintela <quintela@redhat.com> | 2009-10-15 23:16:13 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-10-27 12:28:48 -0500 |
commit | dc3b83a062337d55edd537645fded337ba013343 (patch) | |
tree | f175ec64c808825b936065b8c472e3ad02d2513d | |
parent | aa1cce693d694b00c029ddfccccc4df3fc025aca (diff) |
vmstate: add VMSTATE_UINT16_EQUAL[_V]
Signed-off-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | hw/hw.h | 7 | ||||
-rw-r--r-- | savevm.c | 20 |
2 files changed, 27 insertions, 0 deletions
@@ -322,6 +322,7 @@ extern const VMStateInfo vmstate_info_int32; extern const VMStateInfo vmstate_info_int64; extern const VMStateInfo vmstate_info_uint8_equal; +extern const VMStateInfo vmstate_info_uint16_equal; extern const VMStateInfo vmstate_info_int32_equal; extern const VMStateInfo vmstate_info_int32_le; @@ -560,6 +561,12 @@ extern const VMStateDescription vmstate_i2c_slave; #define VMSTATE_UINT8_EQUAL(_f, _s) \ VMSTATE_SINGLE(_f, _s, 0, vmstate_info_uint8_equal, uint8_t) +#define VMSTATE_UINT16_EQUAL(_f, _s) \ + VMSTATE_SINGLE(_f, _s, 0, vmstate_info_uint16_equal, uint16_t) + +#define VMSTATE_UINT16_EQUAL_V(_f, _s, _v) \ + VMSTATE_SINGLE(_f, _s, _v, vmstate_info_uint16_equal, uint16_t) + #define VMSTATE_INT32_EQUAL(_f, _s) \ VMSTATE_SINGLE(_f, _s, 0, vmstate_info_int32_equal, int32_t) @@ -882,6 +882,26 @@ const VMStateInfo vmstate_info_uint8_equal = { .put = put_uint8, }; +/* 16 bit unsigned int int. See that the received value is the same than the one + in the field */ + +static int get_uint16_equal(QEMUFile *f, void *pv, size_t size) +{ + uint16_t *v = pv; + uint16_t v2; + qemu_get_be16s(f, &v2); + + if (*v == v2) + return 0; + return -EINVAL; +} + +const VMStateInfo vmstate_info_uint16_equal = { + .name = "uint16 equal", + .get = get_uint16_equal, + .put = put_uint16, +}; + /* timers */ static int get_timer(QEMUFile *f, void *pv, size_t size) |