|
From: | Gerd Hoffmann |
Subject: | Re: [Qemu-devel] [PATCH 4/5] New VMstate save/load infrastructure |
Date: | Wed, 19 Aug 2009 09:49:43 +0200 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20090513 Fedora/3.0-2.3.beta2.fc11 Lightning/1.0pre Thunderbird/3.0b2 |
+enum VMStateType { + VMSTATE_TYPE_UNSPEC = 0, + VMSTATE_TYPE_INT8, + VMSTATE_TYPE_INT16, + VMSTATE_TYPE_INT32, + VMSTATE_TYPE_INT64, + VMSTATE_TYPE_UINT8, + VMSTATE_TYPE_UINT16, + VMSTATE_TYPE_UINT32, + VMSTATE_TYPE_UINT64, + VMSTATE_TYPE_TIMER, +}; + +typedef struct VMStateInfo VMStateInfo; + +struct VMStateInfo { + const char *name; + size_t size; + enum VMStateType type; + void (*get)(QEMUFile *f, VMStateInfo *info, void *pv); + void (*put)(QEMUFile *f, VMStateInfo *info, const void *pv); +}; + +typedef struct { + const char *name; + size_t num; + size_t offset; + VMStateInfo *info; + int version_id; +} VMStateField;
Hmm, I'm not sure VMStateInfo is that useful here. All the get/put callbacks are simple two-liners, and it is unlikely that the number of types ever grows.
I think I would stick "enum VMStateType" directly into VMStateField and kill one level of indirection.
+ +typedef struct { + const char *name; + int version_id; + int minimum_version_id; + VMStateField *fields; +} VMStateDescription;
Add compat_load() callback for version_id < minimum_version_id here? cheers, Gerd
[Prev in Thread] | Current Thread | [Next in Thread] |