]> git.proxmox.com Git - qemu.git/blobdiff - hw/hw.h
Add VMState support for pointers
[qemu.git] / hw / hw.h
diff --git a/hw/hw.h b/hw/hw.h
index 659a3d619ec64dde2dc846bdb65cd21b95534b13..9a1ba18a861bd9eca69a038175d7279d9e36af8b 100644 (file)
--- a/hw/hw.h
+++ b/hw/hw.h
@@ -281,6 +281,7 @@ struct VMStateInfo {
 
 enum VMStateFlags {
     VMS_SINGLE  = 0x001,
+    VMS_POINTER = 0x002,
 };
 
 typedef struct {
@@ -311,6 +312,8 @@ extern const VMStateInfo vmstate_info_uint16;
 extern const VMStateInfo vmstate_info_uint32;
 extern const VMStateInfo vmstate_info_uint64;
 
+extern const VMStateInfo vmstate_info_timer;
+
 #define VMSTATE_SINGLE(_field, _state, _version, _info, _type) {     \
     .name       = (stringify(_field)),                               \
     .version_id = (_version),                                        \
@@ -321,6 +324,16 @@ extern const VMStateInfo vmstate_info_uint64;
             + type_check(_type,typeof_field(_state, _field))         \
 }
 
+#define VMSTATE_POINTER(_field, _state, _version, _info, _type) {    \
+    .name       = (stringify(_field)),                               \
+    .version_id = (_version),                                        \
+    .info       = &(_info),                                          \
+    .size       = sizeof(_type),                                     \
+    .flags      = VMS_SINGLE|VMS_POINTER,                            \
+    .offset     = offsetof(_state, _field)                           \
+            + type_check(_type,typeof_field(_state, _field))         \
+}
+
 /* _f : field name
    _s : struct state name
    _v : version
@@ -362,6 +375,12 @@ extern const VMStateInfo vmstate_info_uint64;
 #define VMSTATE_UINT64(_f, _s)                                        \
     VMSTATE_UINT64_V(_f, _s, 0)
 
+#define VMSTATE_TIMER_V(_f, _s, _v)                                   \
+    VMSTATE_POINTER(_f, _s, _v, vmstate_info_timer, QEMUTimer *)
+
+#define VMSTATE_TIMER(_f, _s)                                         \
+    VMSTATE_TIMER_V(_f, _s, 0)
+
 #define VMSTATE_END_OF_LIST()                                         \
     {}