[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/12] savevm: introduce qemu_savevm_local()
From: |
Lei Li |
Subject: |
[Qemu-devel] [PATCH 07/12] savevm: introduce qemu_savevm_local() |
Date: |
Fri, 26 Jul 2013 04:18:14 +0800 |
Signed-off-by: Lei Li <address@hidden>
---
include/sysemu/sysemu.h | 1 +
savevm.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 5b90027..9abe4c9 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -80,6 +80,7 @@ int qemu_savevm_state_iterate(QEMUFile *f);
void qemu_savevm_state_complete(QEMUFile *f);
void qemu_savevm_state_cancel(void);
uint64_t qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size);
+int qemu_savevm_local(QEMUFile *f);
int qemu_save_device_state(QEMUFile *f);
int qemu_loadvm_state(QEMUFile *f);
diff --git a/savevm.c b/savevm.c
index e18ca22..c183369 100644
--- a/savevm.c
+++ b/savevm.c
@@ -2007,6 +2007,61 @@ static int qemu_savevm_state(QEMUFile *f)
}
/**
+ * Save all of the ram pages to stream QEMUFile
+ *
+ * Return: negtive for an error
+ */
+int qemu_savevm_local(QEMUFile *f)
+{
+ SaveStateEntry *se;
+ int ret;
+
+ QTAILQ_FOREACH(se, &savevm_handlers, entry) {
+ if (!se->ops) {
+ continue;
+ }
+ }
+
+ qemu_put_be32(f, QEMU_VM_FILE_MAGIC);
+ qemu_put_be32(f, QEMU_VM_FILE_VERSION);
+
+ QTAILQ_FOREACH(se, &savevm_handlers, entry) {
+ int len;
+
+ if (!se->ops || !se->ops->save_local_setup) {
+ continue;
+ }
+ if (se->ops && se->ops->is_block_active) {
+ continue;
+ }
+
+ /* Section type */
+ qemu_put_byte(f, QEMU_VM_SECTION_START);
+ qemu_put_be32(f, se->section_id);
+
+ /* ID string */
+ len = strlen(se->idstr);
+ qemu_put_byte(f, len);
+ qemu_put_buffer(f, (uint8_t *)se->idstr, len);
+
+ qemu_put_be32(f, se->instance_id);
+
+ qemu_put_be32(f, se->version_id);
+
+ ret = se->ops->save_local_setup(f, se->opaque);
+ if (ret < 0) {
+ qemu_file_set_error(f, ret);
+ break;
+ }
+ }
+
+ qemu_put_byte(f, QEMU_VM_EOF);
+ qemu_fflush(f);
+
+ return qemu_file_get_error(f);
+}
+
+/**
* Save all of the device states to stream QEMUFile
*
* Return negtive if there has been an error
--
1.7.7.6
- [Qemu-devel] [PATCH 0/12 RFC v2] Localhost migration, Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 04/12] arch_init: introduce ram_page_save(), Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 03/12] rename is_active to is_block_active, Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 02/12] savevm: export qemu_save_device_state(), Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 05/12] arch_init: introduce ram_save_local(), Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 06/12] arch_init: add save_local_setup to savevm_ram_handlers, Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 07/12] savevm: introduce qemu_savevm_local(),
Lei Li <=
- [Qemu-devel] [PATCH 08/12] savevm: adjust is_ram check in register_savevm_live(), Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 01/12] migration: export MIG_STATE_xxx flags, Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 12/12] hmp: add hmp_localhost_migration interface, Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 10/12] migration-local: implementation of incoming part, Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 09/12] migration-local: implementation of outgoing part, Lei Li, 2013/07/25
- [Qemu-devel] [PATCH 11/12] migration-local: add option to commandline for incoming-local, Lei Li, 2013/07/25
- Re: [Qemu-devel] [PATCH 0/12 RFC v2] Localhost migration, Paolo Bonzini, 2013/07/26