On Wed, Apr 23, 2014 at 05:37:38PM +0100, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > > Move constants around and add types to allow file structure to move into > visitors. > > Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > --- > arch_init.c | 12 ------------ > include/migration/migration.h | 17 +++++++++++++++++ > include/migration/vmstate.h | 20 +++++++++++++++++--- > include/qemu/typedefs.h | 4 ++-- > 4 files changed, 36 insertions(+), 17 deletions(-) > > diff --git a/arch_init.c b/arch_init.c > index 60c975d..73b9303 100644 > --- a/arch_init.c > +++ b/arch_init.c > @@ -110,18 +110,6 @@ static bool mig_throttle_on; > static int dirty_rate_high_cnt; > static void check_guest_throttling(void); > > -/***********************************************************/ > -/* ram save/restore */ > - > -#define RAM_SAVE_FLAG_FULL 0x01 /* Obsolete, not used anymore */ > -#define RAM_SAVE_FLAG_COMPRESS 0x02 > -#define RAM_SAVE_FLAG_MEM_SIZE 0x04 > -#define RAM_SAVE_FLAG_PAGE 0x08 > -#define RAM_SAVE_FLAG_EOS 0x10 > -#define RAM_SAVE_FLAG_CONTINUE 0x20 > -#define RAM_SAVE_FLAG_XBZRLE 0x40 > -/* 0x80 is reserved in migration.h start with 0x100 next */ > - > static struct defconfig_file { > const char *filename; > /* Indicates it is an user config file (disabled by -no-user-config) */ > diff --git a/include/migration/migration.h b/include/migration/migration.h > index 3e1e6c7..8111125 100644 > --- a/include/migration/migration.h > +++ b/include/migration/migration.h > @@ -165,7 +165,16 @@ void ram_control_load_hook(QEMUFile *f, uint64_t flags); > * side. This lets before_ram_iterate/after_ram_iterate add > * transport-specific sections to the RAM migration data. > */ > +/* ram save/restore */ > +#define RAM_SAVE_FLAG_FULL 0x01 /* Obsolete, not used anymore */ > +#define RAM_SAVE_FLAG_COMPRESS 0x02 > +#define RAM_SAVE_FLAG_MEM_SIZE 0x04 > +#define RAM_SAVE_FLAG_PAGE 0x08 > +#define RAM_SAVE_FLAG_EOS 0x10 > +#define RAM_SAVE_FLAG_CONTINUE 0x20 > +#define RAM_SAVE_FLAG_XBZRLE 0x40 > #define RAM_SAVE_FLAG_HOOK 0x80 > +#define RAM_SAVE_FLAG_MASK 0x1ff > > #define RAM_SAVE_CONTROL_NOT_SUPP -1000 > #define RAM_SAVE_CONTROL_DELAYED -2000 > @@ -174,4 +183,12 @@ size_t ram_control_save_page(QEMUFile *f, ram_addr_t > block_offset, > ram_addr_t offset, size_t size, > int *bytes_sent); > > +typedef struct { > + uint64_t addr; > + uint16_t flags; > + char idstr[256]; > + char ch; /* Used for filled pages (normally 0 fill) */ > + size_t len; /* Uses include xbzrle's data len */ > +} ramsecentry_header; > +
RamSecEntryHeader? and maybe we should make this 256 a named constant too. > #endif > diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h > index e7e1705..a5e4b0b 100644 > --- a/include/migration/vmstate.h > +++ b/include/migration/vmstate.h > @@ -26,6 +26,7 @@ > #ifndef QEMU_VMSTATE_H > #define QEMU_VMSTATE_H 1 > > +#include "qemu/typedefs.h" > #ifndef CONFIG_USER_ONLY > #include <migration/qemu-file.h> > #endif > @@ -49,15 +50,27 @@ typedef struct SaveVMHandlers { > * use data that is local to the migration thread or protected > * by other locks. > */ > - int (*save_live_iterate)(QEMUFile *f, void *opaque); > + int (*save_live_iterate)(Visitor *v, void *opaque); > > /* This runs outside the iothread lock! */ > - int (*save_live_setup)(QEMUFile *f, void *opaque); > - uint64_t (*save_live_pending)(QEMUFile *f, void *opaque, uint64_t > max_size); > + int (*save_live_setup)(Visitor *v, void *opaque); > + uint64_t (*save_live_pending)(void *opaque, uint64_t max_size); > > LoadStateHandler *load_state; > } SaveVMHandlers; > > +/* This is the data used to identify a section as passed > + * into the section version of the compat sequence visitor > + * (TODO: Probably want to move the whole name lookup into there > + * and keep the section_id wrapped inside the binary visitor) > + */ > +typedef struct SectionHeader { > + uint32_t section_id; > + uint32_t instance_id; /* Below only used for full version */ > + uint32_t version_id; > + char idstr[256]; > +} SectionHeader; > + > int register_savevm(DeviceState *dev, > const char *idstr, > int instance_id, > @@ -134,6 +147,7 @@ struct VMStateDescription { > void (*pre_save)(void *opaque); > VMStateField *fields; > const VMStateSubsection *subsections; > + uint32_t ber_tag; > }; > > #ifdef CONFIG_USER_ONLY > diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h > index bf8daac..3fea88e 100644 > --- a/include/qemu/typedefs.h > +++ b/include/qemu/typedefs.h > @@ -10,8 +10,6 @@ typedef struct QEMUBH QEMUBH; > > typedef struct AioContext AioContext; > > -typedef struct Visitor Visitor; > - > struct Monitor; > typedef struct Monitor Monitor; > typedef struct MigrationParams MigrationParams; > @@ -39,6 +37,7 @@ typedef struct DriveInfo DriveInfo; > typedef struct DisplayState DisplayState; > typedef struct DisplayChangeListener DisplayChangeListener; > typedef struct DisplaySurface DisplaySurface; > +typedef struct Error Error; > typedef struct PixelFormat PixelFormat; > typedef struct QemuConsole QemuConsole; > typedef struct CharDriverState CharDriverState; > @@ -73,5 +72,6 @@ typedef struct SHPCDevice SHPCDevice; > typedef struct FWCfgState FWCfgState; > typedef struct PcGuestInfo PcGuestInfo; > typedef struct Range Range; > +typedef struct Visitor Visitor; > > #endif /* QEMU_TYPEDEFS_H */ > -- > 1.9.0