[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 04/21] arch_init: refactor host_from_stream_offset()
From: |
Isaku Yamahata |
Subject: |
[Qemu-devel] [PATCH 04/21] arch_init: refactor host_from_stream_offset() |
Date: |
Thu, 29 Dec 2011 10:25:43 +0900 |
Signed-off-by: Isaku Yamahata <address@hidden>
---
arch_init.c | 25 ++++++++++++++++++-------
arch_init.h | 9 +++++++++
2 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/arch_init.c b/arch_init.c
index 5ad6956..d55e39c 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -335,21 +335,22 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage,
void *opaque)
return (stage == 2) && (expected_time <= migrate_max_downtime());
}
-static inline void *host_from_stream_offset(QEMUFile *f,
- ram_addr_t offset,
- int flags)
+void *ram_load_host_from_stream_offset(QEMUFile *f,
+ ram_addr_t offset,
+ int flags,
+ RAMBlock **last_blockp)
{
- static RAMBlock *block = NULL;
+ RAMBlock *block;
char id[256];
uint8_t len;
if (flags & RAM_SAVE_FLAG_CONTINUE) {
- if (!block) {
+ if (!(*last_blockp)) {
fprintf(stderr, "Ack, bad migration stream!\n");
return NULL;
}
- return block->host + offset;
+ return (*last_blockp)->host + offset;
}
len = qemu_get_byte(f);
@@ -357,14 +358,24 @@ static inline void *host_from_stream_offset(QEMUFile *f,
id[len] = 0;
QLIST_FOREACH(block, &ram_list.blocks, next) {
- if (!strncmp(id, block->idstr, sizeof(id)))
+ if (!strncmp(id, block->idstr, sizeof(id))) {
+ *last_blockp = block;
return block->host + offset;
+ }
}
fprintf(stderr, "Can't find block %s!\n", id);
return NULL;
}
+static inline void *host_from_stream_offset(QEMUFile *f,
+ ram_addr_t offset,
+ int flags)
+{
+ static RAMBlock *block = NULL;
+ return ram_load_host_from_stream_offset(f, offset, flags, &block);
+}
+
int ram_load(QEMUFile *f, void *opaque, int version_id)
{
ram_addr_t addr;
diff --git a/arch_init.h b/arch_init.h
index a3aa059..14d6644 100644
--- a/arch_init.h
+++ b/arch_init.h
@@ -1,6 +1,8 @@
#ifndef QEMU_ARCH_INIT_H
#define QEMU_ARCH_INIT_H
+#include "qemu-common.h"
+
extern const char arch_config_name[];
enum {
@@ -41,4 +43,11 @@ int xen_available(void);
#define RAM_SAVE_VERSION_ID 4 /* currently version 4 */
+#ifdef NEED_CPU_H
+void *ram_load_host_from_stream_offset(QEMUFile *f,
+ ram_addr_t offset,
+ int flags,
+ RAMBlock **last_blockp);
+#endif
+
#endif
--
1.7.1.1
- [Qemu-devel] [PATCH 00/21][RFC] postcopy live migration, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 02/21] arch_init: export RAM_SAVE_xxx flags for postcopy, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 07/21] arch_init/ram_save_live: factor out ram_save_limit, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 11/21] savevm: export qemu_peek_buffer, qemu_peek_byte, qemu_file_skip, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 04/21] arch_init: refactor host_from_stream_offset(),
Isaku Yamahata <=
- [Qemu-devel] [PATCH 06/21] arch_init: refactor ram_save_block(), Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 17/21] update-linux-headers.sh: teach umem.h to update-linux-headers.sh, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 08/21] arch_init/ram_load: refactor ram_load, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 03/21] arch_init/ram_save: introduce constant for ram save version = 4, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 05/21] arch_init/ram_save_live: factor out RAM_SAVE_FLAG_MEM_SIZE case, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 10/21] exec.c: export last_ram_offset(), Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 20/21] postcopy outgoing: add -p and -n option to migrate command, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 15/21] migration: factor out parameters into MigrationParams, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 12/21] savevm: qemu_pending_size() to return pending buffered size, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 18/21] configure: add CONFIG_POSTCOPY option, Isaku Yamahata, 2011/12/28