From 9122a8fed743dbe034db53bcde4b4c313f672f2f Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Thu, 10 Mar 2011 12:33:48 +0100 Subject: [PATCH] vmstate: add VMSTATE_UINT32_EQUAL Signed-off-by: Juan Quintela Signed-off-by: Anthony Liguori --- hw/hw.h | 4 ++++ savevm.c | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/hw/hw.h b/hw/hw.h index 4e2d592533..02992078df 100644 --- a/hw/hw.h +++ b/hw/hw.h @@ -343,6 +343,7 @@ 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_uint32_equal; extern const VMStateInfo vmstate_info_int32_le; extern const VMStateInfo vmstate_info_uint8; @@ -704,6 +705,9 @@ extern const VMStateDescription vmstate_usb_device; #define VMSTATE_INT32_EQUAL(_f, _s) \ VMSTATE_SINGLE(_f, _s, 0, vmstate_info_int32_equal, int32_t) +#define VMSTATE_UINT32_EQUAL(_f, _s) \ + VMSTATE_SINGLE(_f, _s, 0, vmstate_info_uint32_equal, uint32_t) + #define VMSTATE_INT32_LE(_f, _s) \ VMSTATE_SINGLE(_f, _s, 0, vmstate_info_int32_le, int32_t) diff --git a/savevm.c b/savevm.c index a50fd31154..ce063d1e55 100644 --- a/savevm.c +++ b/savevm.c @@ -882,6 +882,27 @@ const VMStateInfo vmstate_info_uint32 = { .put = put_uint32, }; +/* 32 bit uint. See that the received value is the same than the one + in the field */ + +static int get_uint32_equal(QEMUFile *f, void *pv, size_t size) +{ + uint32_t *v = pv; + uint32_t v2; + qemu_get_be32s(f, &v2); + + if (*v == v2) { + return 0; + } + return -EINVAL; +} + +const VMStateInfo vmstate_info_uint32_equal = { + .name = "uint32 equal", + .get = get_uint32_equal, + .put = put_uint32, +}; + /* 64 bit unsigned int */ static int get_uint64(QEMUFile *f, void *pv, size_t size) -- 2.11.4.GIT