From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59573) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vt1iP-0002Qk-Ce for qemu-devel@nongnu.org; Tue, 17 Dec 2013 15:58:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vt1iO-0003IQ-0T for qemu-devel@nongnu.org; Tue, 17 Dec 2013 15:58:05 -0500 Received: from mnementh.archaic.org.uk ([2001:8b0:1d0::1]:43650) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vt1iN-0003II-BC for qemu-devel@nongnu.org; Tue, 17 Dec 2013 15:58:03 -0500 From: Peter Maydell Date: Tue, 17 Dec 2013 20:29:15 +0000 Message-Id: <1387312160-12318-58-git-send-email-peter.maydell@linaro.org> In-Reply-To: <1387312160-12318-1-git-send-email-peter.maydell@linaro.org> References: <1387312160-12318-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PULL 57/62] vmstate: Add support for an array of ptimer_state * List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Blue Swirl , qemu-devel@nongnu.org, Aurelien Jarno Add support for defining a vmstate field which is an array of pointers to structures, and use this to define a VMSTATE_PTIMER_ARRAY() which allows an array of ptimer_state* to be used by devices. Signed-off-by: Peter Maydell Message-id: 1387159292-10436-2-git-send-email-lig.fnst@cn.fujitsu.com --- include/hw/ptimer.h | 4 ++++ include/migration/vmstate.h | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/hw/ptimer.h b/include/hw/ptimer.h index 28fcaf1..a33edf4 100644 --- a/include/hw/ptimer.h +++ b/include/hw/ptimer.h @@ -36,4 +36,8 @@ extern const VMStateDescription vmstate_ptimer; .offset = vmstate_offset_pointer(_state, _field, ptimer_state), \ } +#define VMSTATE_PTIMER_ARRAY(_f, _s, _n) \ + VMSTATE_ARRAY_OF_POINTER_TO_STRUCT(_f, _s, _n, 0, \ + vmstate_ptimer, ptimer_state) + #endif diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 9d09e60..be193ba 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -339,6 +339,16 @@ extern const VMStateInfo vmstate_info_bitmap; .offset = vmstate_offset_array(_state, _field, _type, _num), \ } +#define VMSTATE_ARRAY_OF_POINTER_TO_STRUCT(_f, _s, _n, _v, _vmsd, _type) { \ + .name = (stringify(_f)), \ + .version_id = (_v), \ + .num = (_n), \ + .vmsd = &(_vmsd), \ + .size = sizeof(_type *), \ + .flags = VMS_ARRAY|VMS_STRUCT|VMS_ARRAY_OF_POINTER, \ + .offset = vmstate_offset_array(_s, _f, _type*, _n), \ +} + #define VMSTATE_STRUCT_ARRAY_TEST(_field, _state, _num, _test, _version, _vmsd, _type) { \ .name = (stringify(_field)), \ .num = (_num), \ -- 1.8.5