qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 07/12] savevm: introduce qemu_savevm_local()


From: Michael R. Hines
Subject: Re: [Qemu-devel] [PATCH 07/12] savevm: introduce qemu_savevm_local()
Date: Fri, 02 Aug 2013 15:48:05 -0400
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130329 Thunderbird/17.0.5

On 07/25/2013 04:18 PM, Lei Li wrote:
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

You don't have enough comments in your commit messages - please add more.

Why do you need a new savevm function?

- Michael




reply via email to

[Prev in Thread] Current Thread [Next in Thread]